Prosody data communications Protocols: raw rx

This protocol implements a receiver for uninterpreted digital data. Since it is only a receiver, it only uses the input half of a channel. It is typically used either with HDLC encoding to implement a protocol such as V.120 or with SYNC encoding to monitor the data on a timeslot. When used with HDLC the output half can be configured for raw tx with HDLC to provide a duplex link.

API function behaviour

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

smdc_channel_config()

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

The protocol value is kSMDCProtocolRawRx.

Only on Prosody version 1: There is no configuration for this protocol, so the config_data pointer should be null (0) and the config_length should be zero.

Only on Prosody version 2 (TiNG): The configuration for this protocol is optional, if not required the config_data pointer should be null (0) and the config_length should be zero. In this case the data received will be used unmodified.

If required, the config_data pointer must point to one of these structs:

	typedef struct smdc_raw_config_parms {
		unsigned i460_mask;
		unsigned xorval;
	} SMDC_RAW_CONFIG_PARMS;

'i460_mask' indicates which data bits in the timeslot are to be used. This implements ITU I.460 2.1.2 flexible format multiplexing. For example, if the value is specified as 0x50, then bit 2 and bit 4 (as numbered in I.460) are used from each octet, giving 16000 bits per second. If the value zero is used, this indicates that all bits are to be used (the same as value 0xff).

'xorval' specifies a value to be exclusive-ored with each octet just after reading it from the timeslot.

This protocol can use these encodings: SYNC, ASYNC, and HDLC.

It can also be used with no encoding. For this protocol, the received octets will be unaltered. The most significant bit in each octet is the first that was received.

The firmware module datarx 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()

Overrun is not monitored.

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.