XBee and XBee-PRO ZigBee RF modules provide cost-effective wireless connectivity to electronic devices. They are interoperable with other ZigBee PRO feature set devices, including devices from other vendors.
Core/CoreAPI.cpp@1:3dc0ec2f9fd6, 2015-10-22 (annotated)
- Committer:
- yangcq88517
- Date:
- Thu Oct 22 20:02:11 2015 +0000
- Revision:
- 1:3dc0ec2f9fd6
- Parent:
- 0:837e6c48e90d
- Child:
- 3:6b205ec8624b
bug fix
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yangcq88517 | 0:837e6c48e90d | 1 | #include "CoreAPI.h" |
yangcq88517 | 0:837e6c48e90d | 2 | |
yangcq88517 | 0:837e6c48e90d | 3 | CoreAPI::CoreAPI(ISerial * serial, bool escape) |
yangcq88517 | 0:837e6c48e90d | 4 | :xBeeRx64Indicator(NULL),xBeeRx16Indicator(NULL),xBeeRx64IOSampleIndicator(NULL),xBeeRx16IOSampleIndicator(NULL),xBeeTxStatusIndicator(NULL), |
yangcq88517 | 0:837e6c48e90d | 5 | aTCommandIndicator(NULL),modemStatusIndicator(NULL),zigBeeTxStatusIndicator(NULL),zigBeeRxIndicator(NULL), |
yangcq88517 | 0:837e6c48e90d | 6 | zigBeeExplicitRxIndicator(NULL),zigBeeIOSampleIndicator(NULL),sensorReadIndicator(NULL),nodeIdentificationIndicator(NULL), |
yangcq88517 | 0:837e6c48e90d | 7 | remoteCommandIndicator(NULL),routeRecordIndicator(NULL),manyToOneRouteIndicator(NULL) |
yangcq88517 | 0:837e6c48e90d | 8 | { |
yangcq88517 | 0:837e6c48e90d | 9 | this->serial = serial; |
yangcq88517 | 0:837e6c48e90d | 10 | isEscapeMode = escape; |
yangcq88517 | 0:837e6c48e90d | 11 | msg = new APIFrame(INITIAL_FRAME_LENGTH); |
yangcq88517 | 1:3dc0ec2f9fd6 | 12 | isChecksum = false; |
yangcq88517 | 0:837e6c48e90d | 13 | isRunning = false; |
yangcq88517 | 0:837e6c48e90d | 14 | } |
yangcq88517 | 0:837e6c48e90d | 15 | |
yangcq88517 | 0:837e6c48e90d | 16 | CoreAPI::~CoreAPI() |
yangcq88517 | 0:837e6c48e90d | 17 | { |
yangcq88517 | 1:3dc0ec2f9fd6 | 18 | if (msg != NULL) |
yangcq88517 | 1:3dc0ec2f9fd6 | 19 | delete msg; |
yangcq88517 | 0:837e6c48e90d | 20 | |
yangcq88517 | 1:3dc0ec2f9fd6 | 21 | if (serial != NULL) |
yangcq88517 | 1:3dc0ec2f9fd6 | 22 | delete serial; |
yangcq88517 | 0:837e6c48e90d | 23 | } |
yangcq88517 | 0:837e6c48e90d | 24 | |
yangcq88517 | 0:837e6c48e90d | 25 | void CoreAPI::start() |
yangcq88517 | 0:837e6c48e90d | 26 | { |
yangcq88517 | 0:837e6c48e90d | 27 | if (!isRunning) { |
yangcq88517 | 0:837e6c48e90d | 28 | isRunning = true; |
yangcq88517 | 0:837e6c48e90d | 29 | |
yangcq88517 | 0:837e6c48e90d | 30 | if (!serial->isOpen()) |
yangcq88517 | 0:837e6c48e90d | 31 | serial->open(); |
yangcq88517 | 0:837e6c48e90d | 32 | } |
yangcq88517 | 0:837e6c48e90d | 33 | } |
yangcq88517 | 0:837e6c48e90d | 34 | |
yangcq88517 | 0:837e6c48e90d | 35 | void CoreAPI::stop() |
yangcq88517 | 0:837e6c48e90d | 36 | { |
yangcq88517 | 0:837e6c48e90d | 37 | if (isRunning) { |
yangcq88517 | 0:837e6c48e90d | 38 | isRunning = false; |
yangcq88517 | 0:837e6c48e90d | 39 | serial->close(); |
yangcq88517 | 0:837e6c48e90d | 40 | } |
yangcq88517 | 0:837e6c48e90d | 41 | } |
yangcq88517 | 0:837e6c48e90d | 42 | |
yangcq88517 | 1:3dc0ec2f9fd6 | 43 | void CoreAPI::setVerifyChecksum(bool isCheck) |
yangcq88517 | 1:3dc0ec2f9fd6 | 44 | { |
yangcq88517 | 1:3dc0ec2f9fd6 | 45 | isChecksum = isCheck; |
yangcq88517 | 1:3dc0ec2f9fd6 | 46 | } |
yangcq88517 | 1:3dc0ec2f9fd6 | 47 | |
yangcq88517 | 0:837e6c48e90d | 48 | void CoreAPI::send(APIFrame * request) |
yangcq88517 | 0:837e6c48e90d | 49 | { |
yangcq88517 | 0:837e6c48e90d | 50 | if (!isRunning) |
yangcq88517 | 0:837e6c48e90d | 51 | return; |
yangcq88517 | 0:837e6c48e90d | 52 | |
yangcq88517 | 0:837e6c48e90d | 53 | request->calculateChecksum(); |
yangcq88517 | 0:837e6c48e90d | 54 | int size = request->getPosition(); |
yangcq88517 | 0:837e6c48e90d | 55 | |
yangcq88517 | 0:837e6c48e90d | 56 | serial->writeByte(KEY); |
yangcq88517 | 0:837e6c48e90d | 57 | |
yangcq88517 | 0:837e6c48e90d | 58 | writeByte(size >> 8); |
yangcq88517 | 0:837e6c48e90d | 59 | writeByte(size); |
yangcq88517 | 0:837e6c48e90d | 60 | |
yangcq88517 | 0:837e6c48e90d | 61 | for (int i = 0; i < size; i++) |
yangcq88517 | 0:837e6c48e90d | 62 | writeByte(request->get(i)); |
yangcq88517 | 0:837e6c48e90d | 63 | |
yangcq88517 | 0:837e6c48e90d | 64 | writeByte(request->getCheckSum()); |
yangcq88517 | 0:837e6c48e90d | 65 | } |
yangcq88517 | 0:837e6c48e90d | 66 | |
yangcq88517 | 0:837e6c48e90d | 67 | int CoreAPI::readByte() |
yangcq88517 | 0:837e6c48e90d | 68 | { |
yangcq88517 | 0:837e6c48e90d | 69 | int value = serial->readByte(); |
yangcq88517 | 0:837e6c48e90d | 70 | |
yangcq88517 | 1:3dc0ec2f9fd6 | 71 | if (isEscapeMode && value == ESCAPED) |
yangcq88517 | 0:837e6c48e90d | 72 | return serial->readByte() ^ 0x20; |
yangcq88517 | 0:837e6c48e90d | 73 | |
yangcq88517 | 0:837e6c48e90d | 74 | return value; |
yangcq88517 | 0:837e6c48e90d | 75 | } |
yangcq88517 | 0:837e6c48e90d | 76 | |
yangcq88517 | 0:837e6c48e90d | 77 | void CoreAPI::writeByte(char data) |
yangcq88517 | 0:837e6c48e90d | 78 | { |
yangcq88517 | 0:837e6c48e90d | 79 | if (isEscapeMode) { |
yangcq88517 | 0:837e6c48e90d | 80 | if (data == KEY || data == ESCAPED || data == XON || data == XOFF) { |
yangcq88517 | 0:837e6c48e90d | 81 | serial->writeByte(ESCAPED); |
yangcq88517 | 0:837e6c48e90d | 82 | serial->writeByte(data ^ 0x20); |
yangcq88517 | 0:837e6c48e90d | 83 | return; |
yangcq88517 | 0:837e6c48e90d | 84 | } |
yangcq88517 | 0:837e6c48e90d | 85 | } |
yangcq88517 | 0:837e6c48e90d | 86 | |
yangcq88517 | 0:837e6c48e90d | 87 | serial->writeByte(data); |
yangcq88517 | 0:837e6c48e90d | 88 | } |
yangcq88517 | 0:837e6c48e90d | 89 | |
yangcq88517 | 0:837e6c48e90d | 90 | APIFrame * CoreAPI::getResponse() |
yangcq88517 | 0:837e6c48e90d | 91 | { |
yangcq88517 | 1:3dc0ec2f9fd6 | 92 | if (!isRunning) |
yangcq88517 | 0:837e6c48e90d | 93 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 94 | |
yangcq88517 | 1:3dc0ec2f9fd6 | 95 | if (!serial->peek()) |
yangcq88517 | 1:3dc0ec2f9fd6 | 96 | return NULL; |
yangcq88517 | 1:3dc0ec2f9fd6 | 97 | |
yangcq88517 | 1:3dc0ec2f9fd6 | 98 | while (serial->readByte() != KEY); |
yangcq88517 | 1:3dc0ec2f9fd6 | 99 | |
yangcq88517 | 0:837e6c48e90d | 100 | int length = getLength(); |
yangcq88517 | 0:837e6c48e90d | 101 | |
yangcq88517 | 0:837e6c48e90d | 102 | msg->allocate(length); |
yangcq88517 | 0:837e6c48e90d | 103 | |
yangcq88517 | 0:837e6c48e90d | 104 | readPayLoad(length); |
yangcq88517 | 0:837e6c48e90d | 105 | |
yangcq88517 | 0:837e6c48e90d | 106 | if (isChecksum) { |
yangcq88517 | 0:837e6c48e90d | 107 | if (msg->verifyChecksum()) |
yangcq88517 | 0:837e6c48e90d | 108 | return msg; |
yangcq88517 | 0:837e6c48e90d | 109 | else |
yangcq88517 | 0:837e6c48e90d | 110 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 111 | } else return msg; |
yangcq88517 | 0:837e6c48e90d | 112 | } |
yangcq88517 | 0:837e6c48e90d | 113 | |
yangcq88517 | 0:837e6c48e90d | 114 | int CoreAPI::getLength() |
yangcq88517 | 0:837e6c48e90d | 115 | { |
yangcq88517 | 0:837e6c48e90d | 116 | int msb = readByte(); |
yangcq88517 | 0:837e6c48e90d | 117 | |
yangcq88517 | 0:837e6c48e90d | 118 | int lsb = readByte(); |
yangcq88517 | 0:837e6c48e90d | 119 | |
yangcq88517 | 0:837e6c48e90d | 120 | return (msb << 8) | lsb; |
yangcq88517 | 0:837e6c48e90d | 121 | } |
yangcq88517 | 0:837e6c48e90d | 122 | |
yangcq88517 | 0:837e6c48e90d | 123 | void CoreAPI::readPayLoad(int length) |
yangcq88517 | 0:837e6c48e90d | 124 | { |
yangcq88517 | 0:837e6c48e90d | 125 | for (int i = 0; i < length; i++) |
yangcq88517 | 0:837e6c48e90d | 126 | msg->set(readByte()); |
yangcq88517 | 0:837e6c48e90d | 127 | |
yangcq88517 | 0:837e6c48e90d | 128 | msg->setCheckSum(readByte()); |
yangcq88517 | 0:837e6c48e90d | 129 | } |
yangcq88517 | 0:837e6c48e90d | 130 | |
yangcq88517 | 0:837e6c48e90d | 131 | XBeeRx64Indicator * CoreAPI::getXBeeRx64() |
yangcq88517 | 0:837e6c48e90d | 132 | { |
yangcq88517 | 0:837e6c48e90d | 133 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 134 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 135 | |
yangcq88517 | 0:837e6c48e90d | 136 | if (xBeeRx64Indicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 137 | return &xBeeRx64Indicator; |
yangcq88517 | 0:837e6c48e90d | 138 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 139 | } |
yangcq88517 | 0:837e6c48e90d | 140 | |
yangcq88517 | 0:837e6c48e90d | 141 | XBeeRx16Indicator * CoreAPI::getXBeeRx16() |
yangcq88517 | 0:837e6c48e90d | 142 | { |
yangcq88517 | 0:837e6c48e90d | 143 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 144 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 145 | |
yangcq88517 | 0:837e6c48e90d | 146 | if (xBeeRx16Indicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 147 | return &xBeeRx16Indicator; |
yangcq88517 | 0:837e6c48e90d | 148 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 149 | } |
yangcq88517 | 0:837e6c48e90d | 150 | |
yangcq88517 | 0:837e6c48e90d | 151 | XBeeRx64IOSampleIndicator * CoreAPI::getXBeeRx64IOSample() |
yangcq88517 | 0:837e6c48e90d | 152 | { |
yangcq88517 | 0:837e6c48e90d | 153 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 154 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 155 | |
yangcq88517 | 0:837e6c48e90d | 156 | if (xBeeRx64IOSampleIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 157 | return &xBeeRx64IOSampleIndicator; |
yangcq88517 | 0:837e6c48e90d | 158 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 159 | } |
yangcq88517 | 0:837e6c48e90d | 160 | |
yangcq88517 | 0:837e6c48e90d | 161 | XBeeRx16IOSampleIndicator * CoreAPI::getXBeeRx16IOSample() |
yangcq88517 | 0:837e6c48e90d | 162 | { |
yangcq88517 | 0:837e6c48e90d | 163 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 164 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 165 | |
yangcq88517 | 0:837e6c48e90d | 166 | if (xBeeRx16IOSampleIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 167 | return &xBeeRx16IOSampleIndicator; |
yangcq88517 | 0:837e6c48e90d | 168 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 169 | } |
yangcq88517 | 0:837e6c48e90d | 170 | |
yangcq88517 | 0:837e6c48e90d | 171 | XBeeTxStatusIndicator * CoreAPI::getXBeeTxStatus() |
yangcq88517 | 0:837e6c48e90d | 172 | { |
yangcq88517 | 0:837e6c48e90d | 173 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 174 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 175 | |
yangcq88517 | 0:837e6c48e90d | 176 | if (xBeeTxStatusIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 177 | return &xBeeTxStatusIndicator; |
yangcq88517 | 0:837e6c48e90d | 178 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 179 | } |
yangcq88517 | 0:837e6c48e90d | 180 | |
yangcq88517 | 0:837e6c48e90d | 181 | ATCommandIndicator * CoreAPI::getATCommand() |
yangcq88517 | 0:837e6c48e90d | 182 | { |
yangcq88517 | 0:837e6c48e90d | 183 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 184 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 185 | |
yangcq88517 | 0:837e6c48e90d | 186 | if (aTCommandIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 187 | return &aTCommandIndicator; |
yangcq88517 | 0:837e6c48e90d | 188 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 189 | } |
yangcq88517 | 0:837e6c48e90d | 190 | |
yangcq88517 | 0:837e6c48e90d | 191 | ModemStatusIndicator * CoreAPI::getModemStatus() |
yangcq88517 | 0:837e6c48e90d | 192 | { |
yangcq88517 | 0:837e6c48e90d | 193 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 194 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 195 | |
yangcq88517 | 0:837e6c48e90d | 196 | if (modemStatusIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 197 | return &modemStatusIndicator; |
yangcq88517 | 0:837e6c48e90d | 198 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 199 | } |
yangcq88517 | 0:837e6c48e90d | 200 | |
yangcq88517 | 0:837e6c48e90d | 201 | ZigBeeTxStatusIndicator * CoreAPI::getZigBeeTxStatus() |
yangcq88517 | 0:837e6c48e90d | 202 | { |
yangcq88517 | 0:837e6c48e90d | 203 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 204 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 205 | |
yangcq88517 | 0:837e6c48e90d | 206 | if (zigBeeTxStatusIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 207 | return &zigBeeTxStatusIndicator; |
yangcq88517 | 0:837e6c48e90d | 208 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 209 | } |
yangcq88517 | 0:837e6c48e90d | 210 | |
yangcq88517 | 0:837e6c48e90d | 211 | ZigBeeRxIndicator * CoreAPI::getZigBeeRx() |
yangcq88517 | 0:837e6c48e90d | 212 | { |
yangcq88517 | 0:837e6c48e90d | 213 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 214 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 215 | |
yangcq88517 | 0:837e6c48e90d | 216 | if (zigBeeRxIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 217 | return &zigBeeRxIndicator; |
yangcq88517 | 0:837e6c48e90d | 218 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 219 | } |
yangcq88517 | 0:837e6c48e90d | 220 | |
yangcq88517 | 0:837e6c48e90d | 221 | ZigBeeExplicitRxIndicator * CoreAPI::getZigBeeExplicitRx() |
yangcq88517 | 0:837e6c48e90d | 222 | { |
yangcq88517 | 0:837e6c48e90d | 223 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 224 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 225 | |
yangcq88517 | 0:837e6c48e90d | 226 | if (zigBeeExplicitRxIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 227 | return &zigBeeExplicitRxIndicator; |
yangcq88517 | 0:837e6c48e90d | 228 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 229 | } |
yangcq88517 | 0:837e6c48e90d | 230 | |
yangcq88517 | 0:837e6c48e90d | 231 | ZigBeeIOSampleIndicator * CoreAPI::getZigBeeIOSample() |
yangcq88517 | 0:837e6c48e90d | 232 | { |
yangcq88517 | 0:837e6c48e90d | 233 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 234 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 235 | |
yangcq88517 | 0:837e6c48e90d | 236 | if (zigBeeIOSampleIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 237 | return &zigBeeIOSampleIndicator; |
yangcq88517 | 0:837e6c48e90d | 238 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 239 | } |
yangcq88517 | 0:837e6c48e90d | 240 | |
yangcq88517 | 0:837e6c48e90d | 241 | SensorReadIndicator * CoreAPI::getSensorRead() |
yangcq88517 | 0:837e6c48e90d | 242 | { |
yangcq88517 | 0:837e6c48e90d | 243 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 244 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 245 | |
yangcq88517 | 0:837e6c48e90d | 246 | if (sensorReadIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 247 | return &sensorReadIndicator; |
yangcq88517 | 0:837e6c48e90d | 248 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 249 | } |
yangcq88517 | 0:837e6c48e90d | 250 | |
yangcq88517 | 0:837e6c48e90d | 251 | NodeIdentificationIndicator * CoreAPI::getNodeIdentification() |
yangcq88517 | 0:837e6c48e90d | 252 | { |
yangcq88517 | 0:837e6c48e90d | 253 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 254 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 255 | |
yangcq88517 | 0:837e6c48e90d | 256 | if (nodeIdentificationIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 257 | return &nodeIdentificationIndicator; |
yangcq88517 | 0:837e6c48e90d | 258 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 259 | } |
yangcq88517 | 0:837e6c48e90d | 260 | |
yangcq88517 | 0:837e6c48e90d | 261 | RemoteCommandIndicator * CoreAPI::getRemoteCommand() |
yangcq88517 | 0:837e6c48e90d | 262 | { |
yangcq88517 | 0:837e6c48e90d | 263 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 264 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 265 | |
yangcq88517 | 0:837e6c48e90d | 266 | if (remoteCommandIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 267 | return &remoteCommandIndicator; |
yangcq88517 | 0:837e6c48e90d | 268 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 269 | } |
yangcq88517 | 0:837e6c48e90d | 270 | |
yangcq88517 | 0:837e6c48e90d | 271 | RouteRecordIndicator * CoreAPI::getRouteRecord() |
yangcq88517 | 0:837e6c48e90d | 272 | { |
yangcq88517 | 0:837e6c48e90d | 273 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 274 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 275 | |
yangcq88517 | 0:837e6c48e90d | 276 | if (routeRecordIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 277 | return &routeRecordIndicator; |
yangcq88517 | 0:837e6c48e90d | 278 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 279 | } |
yangcq88517 | 0:837e6c48e90d | 280 | |
yangcq88517 | 0:837e6c48e90d | 281 | ManyToOneRouteIndicator * CoreAPI::getManyToOneRoute() |
yangcq88517 | 0:837e6c48e90d | 282 | { |
yangcq88517 | 0:837e6c48e90d | 283 | if (getResponse() == NULL) |
yangcq88517 | 0:837e6c48e90d | 284 | return NULL; |
yangcq88517 | 0:837e6c48e90d | 285 | |
yangcq88517 | 0:837e6c48e90d | 286 | if (manyToOneRouteIndicator.convert(msg)) |
yangcq88517 | 0:837e6c48e90d | 287 | return &manyToOneRouteIndicator; |
yangcq88517 | 0:837e6c48e90d | 288 | else return NULL; |
yangcq88517 | 0:837e6c48e90d | 289 | } |