Prosody data communications Protocols: CW rx

CW is 'continuous wave' which is a method of transmitting data using a tone. Binary data is encoded by sending either silence or a tone. A tone represents a space (zero) bit, while silence represents a mark (one) bit. The name continuous wave comes from the world of radio communications. It may seem strange that a signalling system that starts and stops a tone can be called continuous but the name was introduced when radio communications was moving from the spark transmitters (which produce a burst of broad spectrum radio noise) to transmitters using oscillators and which therefore could transmit a continuous carrier at a single frequency - hence the name.

This protocol implements the receiver for CW. Since it is only a receiver, it only uses the input half of a channel. Typically the output half is configured for CW tx.

API function behaviour

This should be read in conjunction with the generic data communications documentation.

smdc_channel_config()

You must use #include "smdc_cw.h" to get the appropriate declarations.

The protocol value is kSMDCProtocolCWrx.

The config_data pointer must point to one of these structs:

	typedef struct smdc_cw_config_parms {
		unsigned long speed;
		float space_frequency;
		unsigned long rx_carrier_off_mS;
	} SMDC_CW_CONFIG_PARMS;

'speed' is the data rate in bits per second.

'space_frequency' is the frequency, in Hz, of the tone used to encode space ('0') bits.

'rx_carrier_off_mS' is the maximum duration of loss of carrier (in milliseconds) that will be tolerated before deciding that the carrier has gone. Of course this is equivalent to the maximum duration of an uninterrupted mark ('1') signal.

This protocol can use these encodings: SYNC, ASYNC, and HDLC. Note that when using ASYNC encoding, the firmware module fskasyrx is used instead of asyrx, and when SYNC or HDLC encodings are used the firmware module fskpll is required in addition to the encoding module. Note that since a CW signal contains no clock information, if SYNC or HDLC encodings are used, the data must contain enough transitions between silence and carrier (i.e. no long runs of only zeros or only ones) to allow the receiver to keep locked onto the bit rate.

The firmware modules cwrx and inchan must have been downloaded.

smdc_line_control()

[note] not useful - receiver is always connected

smdc_line_status()

smdc_tx_status()

This function is not applicable since it only applies to the output half of a channel.

smdc_tx_control()

This function is not applicable since it only applies to the output half of a channel.

smdc_rx_status()

smdc_rx_control()

smdc_rx_data()

smdc_tx_data()

This function is not applicable since it only applies to the output half of a channel.