/** ********************************************************************************************************* * xmk guide * * (c) Copyright 2016-2020, hualijidian.com * All Rights Reserved * * @file mns.c * @author eric * @brief * @date 2017��7��22�� * @version V0.0.1 ********************************************************************************************************* */ #include "mns.h" #include "drv_can.h" #include "stdint.h" #include "env.h" #define mnsAddLcd(l) if(li < 3){lcds[li] = (l); li ++; si=MgsNA;} int16_t MnsParseCanHs(uint8_t *data, uint8_t branch, uint8_t * find) { uint16_t indicate = data[1], di; int16_t lcds[3]; uint8_t i = 0, li = 0; int16_t si = MgsNA; indicate = (indicate << 7) + (data[0] >> 1); if(data[2]){ indicate = indicate | 0x8000; } // LogBits("MnsParseCanHs:", indicate, 16); lcds[0] = MgsNA; lcds[1] = MgsNA; lcds[2] = MgsNA; for(i = 0;i < 16;i++){ di = indicate & (1 << i); if(di > 0){ if(si == MgsNA){ si = i; } }else{ if(si != MgsNA){ mnsAddLcd((si + i - 16) * 5); } } } if(si != MgsNA){ mnsAddLcd((si + i - 16) * 5); } if((branch == BRANCH_RIGHT) && (lcds[1] != MgsNA)){ *find = True; return lcds[1]; }else{ if(lcds[0] != MgsNA){ *find = True; return lcds[0]; }else{ *find = False; return MgsNA; } } }