Rev 151 | Rev 171 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 151 | Rev 153 | ||
---|---|---|---|
Line 169... | Line 169... | ||
169 | 169 | ||
170 | // typical called in an UART Rx ISR |
170 | // typical called in an UART Rx ISR |
171 | /**************************************************************/ |
171 | /**************************************************************/ |
172 | /* Collect serial frame */ |
172 | /* Collect serial frame */ |
173 | /**************************************************************/ |
173 | /**************************************************************/ |
174 | void MKProtocol_CollectSerialFrame(Buffer_t* pRxBuff, u8 c) |
174 | u8 MKProtocol_CollectSerialFrame(Buffer_t* pRxBuff, u8 c) |
175 | { |
175 | { |
176 | if(pRxBuff->Locked == FALSE) |
176 | if(pRxBuff->Locked == FALSE) |
177 | { // rx buffer not locked |
177 | { // rx buffer not locked |
178 | if(c == '#') // if syncronisation character is received |
178 | if(c == '#') // if syncronisation character is received |
Line 224... | Line 224... | ||
224 | else // rxd buffer overrun |
224 | else // rxd buffer overrun |
225 | { |
225 | { |
226 | Buffer_Clear(pRxBuff); |
226 | Buffer_Clear(pRxBuff); |
227 | } // eof rxd buffer overrrun |
227 | } // eof rxd buffer overrrun |
228 | } |
228 | } |
- | 229 | return(pRxBuff->Locked); |
|
229 | } |
230 | } |
Line 230... | Line 231... | ||
230 | 231 | ||
231 | /**************************************************************/ |
232 | /**************************************************************/ |
232 | /* Decode data */ |
233 | /* Decode data */ |
Line 252... | Line 253... | ||
252 | 253 | ||
253 | if(len--) pRxBuff->pData[ptrOut++] = x; else break; |
254 | if(len--) pRxBuff->pData[ptrOut++] = x; else break; |
254 | if(len--) pRxBuff->pData[ptrOut++] = y; else break; |
255 | if(len--) pRxBuff->pData[ptrOut++] = y; else break; |
255 | if(len--) pRxBuff->pData[ptrOut++] = z; else break; |
256 | if(len--) pRxBuff->pData[ptrOut++] = z; else break; |
- | 257 | } |
|
256 | } |
258 | pRxBuff->pData[1] -= 'a'; // substract address offset |
257 | pSerialMsg->Address = pRxBuff->pData[1] - 'a'; |
259 | pSerialMsg->pAddress = &(pRxBuff->pData[1]); |
258 | pSerialMsg->CmdID = pRxBuff->pData[2]; |
260 | pSerialMsg->pCmdID = &(pRxBuff->pData[2]); |
259 | pSerialMsg->pData = &(pRxBuff->pData[3]); |
261 | pSerialMsg->pData = &(pRxBuff->pData[3]); |
260 | pSerialMsg->DataLen = ptrOut - 3; // return number of data in bytes |
262 | pSerialMsg->DataLen = ptrOut - 3; // return number of data in bytes |
261 | pRxBuff->Position = 0; |
263 | pRxBuff->Position = 0; |
262 | pRxBuff->DataBytes = ptrOut; |
264 | pRxBuff->DataBytes = ptrOut; |