11.4 piWebCAT operation - the data request queue
The web browser is here referred to as the client. Raspberry Pi is RPi
piWebCAT communicates with the radios using the following data path:
Client (javascript) < ajax commands> RPi server (PHP code) <serial link> radio
< > MYSQL database
All data transactions are initiated from the client using jQuery Ajax requests (see Ajax, MYSQL)
This means that we cannot use Icom transceive (radio-initiated data transfers).
The PHP code on the server lives to do each single request and then dies.
Client to server requests are:
- Timer driven repetitive tasks ( eg: frequency change, meter updates)
- User driven tasks such as button and slider actions.
To avoid errors due to data collisions, all client > server tasks are managed in a queue.
The queue has six data types in 22 slots.
The slots are polled cyclically for requests bit in addition, certain data types are given priority.
The six data types are:
- MOX Radio Tx/Rx status. Responds to radio MOX and PTT. Read only.
- METR A meter read request (S meter or Tx meter) Read only, A and B slots.
- FREQ Frequency request. 4 slots, Read or write for VFO A or B
- BUTN Buttons - 4 slots. Read state or set state. Read or write for VFO A or B.
- SLDR Sliders - 4slots. Read state or set state. Read or write for VFO A or B.
- DATA Some other non-VFO specific requests
The queue is checked every 10ms (a database timing then deleted from the queue.
The next 10ms scan starts at the next point in the queue so that infrequent requests are not missed.
Frequency writes, other write items and meter reads are given extra high priority.
Priority data
From a priority viewpoint, data types are categorised as follows:
- Frequency setting A rapid sequence of frequency setting messages only occurs when
the user is making a tuning action. (ie mouse wheel or drag tuning).
In addition, isolated frequency set messages occur from clicking the tuning scale
or on band changing. When the repetitive queue scan process finds a
frequency set message in the queue, it is given immediate priority.
This is appropriate because the user is totally focused on the rig frequency change
response during this process.( Button and slider responses can be momentarily
ignored because the user is unlikely to operate other controls exactly at the same
time as tuning. - Buttons, sliders Button and slider rig setting actions by the user give rise to isolated single messages.
They can therefore be given high priority without risk of compromising the key
background task of meter display and control synchronisation with the rig.
- Meter updates Updates of S meter read (and transmit metering reads) from the rig are the main
ongoing background task needing a high priority. They occur all the time and so
their maximum priority has to be limited to alternate message sending slots in order
to allow the other background processes cocntrol syncing) to get a look in. - Syncing controls This is the user-configurable synchronisation of selected on-screen buttons and sliders
to their corresponding controls on the rig. They have the lowest priority and are managed
cyclically to ensure that no control is repeatedly missed.