Dependencies: ChaNFSSD mbed BMP085 SHT2x
UBXPacket.c
00001 /* 00002 * Copyright (c) 2011 Toshihisa T 00003 * Released under the MIT License: http://mbed.org/license/mit 00004 */ 00005 00006 #include "UBXPacket.h" 00007 00008 void UBXPacket_CalcSum(struct UBXPacket_s *info,int c) 00009 { 00010 *(info->sum + 0) = *(info->sum + 0) + ((unsigned char)c); 00011 *(info->sum + 1) = *(info->sum + 1) + *(info->sum + 0); 00012 } 00013 00014 int UBXPacket_Parse(struct UBXPacket_s *info,int c) 00015 { 00016 if(info->cjobst == 0){ 00017 info->cjobst = (c == 0xB5) ? 1 /* OK */ : 0 /*Err*/; 00018 } else if(info->cjobst == 1){ 00019 info->cjobst = (c == 0x62) ? 2 /* OK */ : 0 /*Err*/; 00020 info->sum[0] = info->sum[1] = 0; 00021 } else if(info->cjobst == 2){ 00022 UBXPacket_CalcSum(info,c); 00023 info->cls = (unsigned char)c; 00024 info->cjobst++; 00025 } else if(info->cjobst == 3){ 00026 UBXPacket_CalcSum(info,c); 00027 info->id = (unsigned char)c; 00028 info->cjobst++; 00029 } else if(info->cjobst == 4){ 00030 UBXPacket_CalcSum(info,c); 00031 info->len = (unsigned char)c; 00032 info->cjobst++; 00033 } else if(info->cjobst == 5){ 00034 UBXPacket_CalcSum(info,c); 00035 info->len |= (((unsigned short)c) << 8); 00036 info->idx = 0; 00037 info->cjobst++; 00038 } else if(info->cjobst == 6){ 00039 UBXPacket_CalcSum(info,c); 00040 info->body[info->idx] = (unsigned char)c; 00041 info->idx++; 00042 if(info->idx >= info->len){ 00043 info->cjobst = 7; 00044 } 00045 } else if(info->cjobst == 7){ 00046 info->cjobst = (c == info->sum[0]) ? 8 /* OK */ : 0 /*Err*/; 00047 } else if(info->cjobst == 8){ 00048 info->cjobst = (c == info->sum[1]) ? 100 /* OK */ : 0 /*Err*/; 00049 } 00050 return info->cjobst; 00051 } 00052 00053 00054
Generated on Thu Jul 14 2022 16:50:44 by 1.7.2