Dependencies: ChaNFSSD mbed BMP085 SHT2x
libT/portable/UBXPacket.c
- Committer:
- tosihisa
- Date:
- 2012-02-27
- Revision:
- 9:9ca3db7ed7cb
- Parent:
- 4:879b8dcfee15
File content as of revision 9:9ca3db7ed7cb:
/* * Copyright (c) 2011 Toshihisa T * Released under the MIT License: http://mbed.org/license/mit */ #include "UBXPacket.h" void UBXPacket_CalcSum(struct UBXPacket_s *info,int c) { *(info->sum + 0) = *(info->sum + 0) + ((unsigned char)c); *(info->sum + 1) = *(info->sum + 1) + *(info->sum + 0); } int UBXPacket_Parse(struct UBXPacket_s *info,int c) { if(info->cjobst == 0){ info->cjobst = (c == 0xB5) ? 1 /* OK */ : 0 /*Err*/; } else if(info->cjobst == 1){ info->cjobst = (c == 0x62) ? 2 /* OK */ : 0 /*Err*/; info->sum[0] = info->sum[1] = 0; } else if(info->cjobst == 2){ UBXPacket_CalcSum(info,c); info->cls = (unsigned char)c; info->cjobst++; } else if(info->cjobst == 3){ UBXPacket_CalcSum(info,c); info->id = (unsigned char)c; info->cjobst++; } else if(info->cjobst == 4){ UBXPacket_CalcSum(info,c); info->len = (unsigned char)c; info->cjobst++; } else if(info->cjobst == 5){ UBXPacket_CalcSum(info,c); info->len |= (((unsigned short)c) << 8); info->idx = 0; info->cjobst++; } else if(info->cjobst == 6){ UBXPacket_CalcSum(info,c); info->body[info->idx] = (unsigned char)c; info->idx++; if(info->idx >= info->len){ info->cjobst = 7; } } else if(info->cjobst == 7){ info->cjobst = (c == info->sum[0]) ? 8 /* OK */ : 0 /*Err*/; } else if(info->cjobst == 8){ info->cjobst = (c == info->sum[1]) ? 100 /* OK */ : 0 /*Err*/; } return info->cjobst; }