V.110 RLP is a related to the ITU-T V.110 standard. It is the Radio Link Protocol which allows V.110 to interwork with devices like mobile phones which use a radio interface.
This protocol implements the transmitter for V.110 RLP. Since it is only a transmitter, it only uses the output half of a channel. Typically the input half is configured for V.110 RLP rx.
This should be read in conjunction with the generic data communications documentation.
You must use #include "smdc_rlp.h"
to get the
appropriate declarations.
The protocol value is kSMDCProtocolV110RLPtx
.
The config_data pointer must point to one of these structs:
typedef struct smdc_v110rlp_config_parms { unsigned long speed; } SMDC_V110RLP_CONFIG_PARMS;
Where 'speed
' is the speed in bits per second
(6000, 12000, 24000, or 48000).
The firmware module v110rlpt must have been downloaded.
This protocol does not use encodings, so the 'encoding' field must be set to the value kSMDCConfigEncodingNone.
The 'DTX' bit is controlled by the RTS commands. [note] Other commands are invalid because RLP does not use an initial handshake.
The kSMDCLineCtlCmdSetPrefixSuffix command is not supported by this protocol.
The transmitter never reports 'empty'.
[note] 'flow' is not useful since there is no flow control mechanism.
The only notification implemented is NotifyOnCapacity.
When setting the capacity, it is necessary to specify a value one greater than the value required. i.e. to get notified when space is available for at least 32 bytes, set the capacity to 33 or greater.
This function is not applicable since it only applies to the input half of a channel.
This function is not applicable since it only applies to the input half of a channel.
This function is not applicable since it only applies to the input half of a channel.
The length of data supplied in each call should be a multiple of 32 bits. The data is interpreted in 256-bit pieces, but it is not necessary to call smdc_tx_data() with a whole piece, nor to ensure that each call describes only one piece. i.e. the calls can pass any convenient amount of data (up to the maximum transfer size allowed). Each piece is interpreted as follows (least significant bit on the right):
MSB | LSB | ||||||
---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 |
D23 | D22 | D21 | D20 | D19 | D18 | D17 | D16 |
D31 | D30 | D29 | D28 | D27 | D26 | D25 | D24 |
D39 | D38 | D37 | D36 | D35 | D34 | D33 | D32 |
D47 | D46 | D45 | D44 | D43 | D42 | D41 | D40 |
D55 | D54 | D53 | D52 | D51 | D50 | D49 | D48 |
D63 | D62 | D61 | D60 | D59 | D58 | D57 | D56 |
D71 | D70 | D69 | D68 | D67 | D66 | D65 | D64 |
D79 | D78 | D77 | D76 | D75 | D74 | D73 | D72 |
D87 | D86 | D85 | D84 | D83 | D82 | D81 | D80 |
D95 | D94 | D93 | D92 | D91 | D90 | D89 | D88 |
D103 | D102 | D101 | D100 | D99 | D98 | D97 | D96 |
D111 | D110 | D109 | D108 | D107 | D106 | D105 | D104 |
D119 | D118 | D117 | D116 | D115 | D114 | D113 | D112 |
D127 | D126 | D125 | D124 | D123 | D122 | D121 | D120 |
D135 | D134 | D133 | D132 | D131 | D130 | D129 | D128 |
D143 | D142 | D141 | D140 | D139 | D138 | D137 | D136 |
D151 | D150 | D149 | D148 | D147 | D146 | D145 | D144 |
D159 | D158 | D157 | D156 | D155 | D154 | D153 | D152 |
D167 | D166 | D165 | D164 | D163 | D162 | D161 | D160 |
D175 | D174 | D173 | D172 | D171 | D170 | D169 | D168 |
D183 | D182 | D181 | D180 | D179 | D178 | D177 | D176 |
D191 | D190 | D189 | D188 | D187 | D186 | D185 | D184 |
D199 | D198 | D197 | D196 | D195 | D194 | D193 | D192 |
D207 | D206 | D205 | D204 | D203 | D202 | D201 | D200 |
D215 | D214 | D213 | D212 | D211 | D210 | D209 | D208 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
The D bits are sent in the frame like this (left to right):
FIRST | LAST | ||||||
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | D0 | D1 | D2 | D3 | D4 | D5 | D6 |
1 | D7 | D8 | D9 | D10 | D11 | D12 | D13 |
1 | D14 | D15 | D16 | D17 | D18 | D19 | D20 |
1 | D21 | D22 | D23 | D24 | D25 | D26 | D27 |
1 | DTX | 0 | 0 | D28 | D29 | D30 | D31 |
1 | D32 | D33 | D34 | D35 | D36 | D37 | D38 |
1 | D39 | D40 | D41 | D42 | D43 | D44 | D45 |
1 | D46 | D47 | D48 | D49 | D50 | D51 | D52 |
1 | D53 | D54 | D55 | D56 | D57 | D58 | D59 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | D60 | D61 | D62 | D63 | D64 | D65 | D66 |
1 | D67 | D68 | D69 | D70 | D71 | D72 | D73 |
1 | D74 | D75 | D76 | D77 | D78 | D79 | D80 |
1 | D81 | D82 | D83 | D84 | D85 | D86 | D87 |
1 | DTX | 0 | 1 | D88 | D89 | D90 | D91 |
1 | D92 | D93 | D94 | D95 | D96 | D97 | D98 |
1 | D99 | D100 | D101 | D102 | D103 | D104 | D105 |
1 | D106 | D107 | D108 | D109 | D110 | D111 | D112 |
1 | D113 | D114 | D115 | D116 | D117 | D118 | D119 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | D120 | D121 | D122 | D123 | D124 | D125 | D126 |
1 | D127 | D128 | D129 | D130 | D131 | D132 | D133 |
1 | D134 | D135 | D136 | D137 | D138 | D139 | D140 |
1 | D141 | D142 | D143 | D144 | D145 | D146 | D147 |
1 | DTX | 1 | 0 | D148 | D149 | D150 | D151 |
1 | D152 | D153 | D154 | D155 | D156 | D157 | D158 |
1 | D159 | D160 | D161 | D162 | D163 | D164 | D165 |
1 | D166 | D167 | D168 | D169 | D170 | D171 | D172 |
1 | D173 | D174 | D175 | D176 | D177 | D178 | D179 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | D180 | D181 | D182 | D183 | D184 | D185 | D186 |
1 | D187 | D188 | D189 | D190 | D191 | D192 | D193 |
1 | D194 | D195 | D196 | D197 | D198 | D199 | D200 |
1 | D201 | D202 | D203 | D204 | D205 | D206 | D207 |
1 | DTX | 1 | 1 | D208 | D209 | D210 | D211 |
1 | D212 | D213 | D214 | D215 | C | C | C |
1 | C | C | C | C | C | C | C |
1 | C | C | C | C | C | C | C |
1 | C | C | C | C | C | C | C |
The bit positions marked 'DTX' are filled from the value of the DTX setting.
The bit positions marked 'C' are filled in with the CRC, which is calculated automatically.
The bit positions marked '0' or '1' are fixed framing bits.
If the transmitter experiences underrun, it repeats the previous frame (or sends an all-zero frame (GSM 04.21 sec 7) if there was no previous frame because this is the first frame).