Subversion Repositories NaviCtrl

Rev

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;