123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /**
- *********************************************************************************************************
- * 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;
- }
- }
- }
|