|
@@ -61,7 +61,8 @@ uint8_t battbuffer[100];//电池数据都存在此数组中————电压14
|
|
|
* 32+X*2+N 33+X*2+N 34+x*2+N 35 +X*2+N 36+X*2 +N 37+X*2+N
|
|
|
* 电池状态 是否加热 最高单体H 最高单体L 最低单体H 最低单体L
|
|
|
* */
|
|
|
-
|
|
|
+//GPS信息
|
|
|
+extern GPS_INFO Gps_Data;
|
|
|
//状态机定义
|
|
|
typedef enum
|
|
|
{
|
|
@@ -204,6 +205,7 @@ static void Main_Task(void* arg)
|
|
|
}
|
|
|
case PROCESS_STATE_WORK:
|
|
|
{
|
|
|
+ NetSocDisplay(LED_SOC_0,LED_TURN_ON);
|
|
|
osDelay(10/portTICK_PERIOD_MS);
|
|
|
Can_index++;
|
|
|
Uart_index++;
|
|
@@ -213,7 +215,7 @@ static void Main_Task(void* arg)
|
|
|
PROC_UART_STATE_SWITCH(PROCESS_UART_STATE_WORK);
|
|
|
Uart_index = 0;
|
|
|
}
|
|
|
- if (Can_index >=100)//Can 1s 调用一次
|
|
|
+ if (Can_index >=10)//Can 1s 调用一次
|
|
|
{
|
|
|
PROC_CAN_STATE_SWITCH(PROCESS_CAN_STATE_RECV);
|
|
|
Can_index = 0;
|
|
@@ -230,7 +232,7 @@ static void Main_Task(void* arg)
|
|
|
{
|
|
|
sleep_index = 0;
|
|
|
}
|
|
|
- if (sleep_index >=6000)
|
|
|
+ if (sleep_index >=60000)
|
|
|
{
|
|
|
PROC_MAIN_STATE_SWITCH(PROCESS_STATE_SLEEP);
|
|
|
sleep_index = 0;
|
|
@@ -239,34 +241,39 @@ static void Main_Task(void* arg)
|
|
|
}
|
|
|
case PROCESS_STATE_SLEEP:
|
|
|
{
|
|
|
+ Sleep_Flag = true;
|
|
|
while((gProcess_Uart_Task!=PROCESS_UART_STATE_SLEEP)||(gProcess_Can_Task!=PROCESS_CAN_STATE_SLEEP))
|
|
|
{
|
|
|
PROC_UART_STATE_SWITCH(PROCESS_UART_STATE_SLEEP);
|
|
|
PROC_CAN_STATE_SWITCH(PROCESS_CAN_STATE_SLEEP);
|
|
|
}
|
|
|
- Sleep_Flag = true;
|
|
|
+ osDelay(1000);
|
|
|
slpManSlpState_t State;
|
|
|
uint8_t cnt;
|
|
|
if(slpManCheckVoteState(MainSlpHandler, &State, &cnt)==RET_TRUE)
|
|
|
{
|
|
|
#ifdef USING_PRINTF
|
|
|
- printf("[%d]We Can Check Vote State, state=%d, cnt=%d\r\n",__LINE__,State,cnt);
|
|
|
+ printf("[%d]We Can Check Vote Main State, state=%d, cnt=%d\r\n",__LINE__,State,cnt);
|
|
|
#endif
|
|
|
}
|
|
|
slpManPlatVoteEnableSleep(MainSlpHandler, SLP_SLP2_STATE);
|
|
|
if(slpManCheckVoteState(MainSlpHandler, &State, &cnt)==RET_TRUE)
|
|
|
{
|
|
|
#ifdef USING_PRINTF
|
|
|
- printf("[%d]We Can Check Vote State Again, state=%d, cnt=%d\r\n",__LINE__,State,cnt);
|
|
|
+ printf("[%d]We Can Check Vote Main State Again, state=%d, cnt=%d\r\n",__LINE__,State,cnt);
|
|
|
#endif
|
|
|
}
|
|
|
#ifdef USING_PRINTF
|
|
|
printf("[%d]Waiting sleep\r\n",__LINE__);
|
|
|
#endif
|
|
|
+ FaultDisplay(LED_TURN_ON);
|
|
|
+ slpManSlpState_t slpstate = slpManPlatGetSlpState();
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ printf("which slpstate can go now :%d \n",slpstate);
|
|
|
+ #endif
|
|
|
#ifdef USING_PRINTF
|
|
|
printf("Main_Sleep\n");
|
|
|
#endif
|
|
|
- FaultDisplay(LED_TURN_ON);
|
|
|
slpManDeepSlpTimerStart(deepslpTimerID,60000);
|
|
|
while(1)
|
|
|
{
|
|
@@ -415,14 +422,12 @@ static void Uart_Task(void* arg)
|
|
|
uint8_t *Uart_Rece_buffer = NULL;
|
|
|
volatile bool Uart_task = false;
|
|
|
Batt_Cell_Num_2 = Batt_Cell_Num<<1;
|
|
|
- gpsReqMsg Gpsmsg;
|
|
|
while (true)
|
|
|
{
|
|
|
switch (gProcess_Uart_Task)
|
|
|
{
|
|
|
case PROCESS_UART_STATE_IDLE:
|
|
|
- {
|
|
|
- NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
|
|
|
+ {
|
|
|
Rece_index = 0;
|
|
|
break;
|
|
|
}
|
|
@@ -446,25 +451,11 @@ static void Uart_Task(void* arg)
|
|
|
}
|
|
|
case PROCESS_UART_STATE_WORK:
|
|
|
{
|
|
|
- posGGAServiceStart(GGACallBack);
|
|
|
- if(gpsMsgQueue == NULL)
|
|
|
- {
|
|
|
- gpsMsgQueue = osMessageQueueNew(1,sizeof(gpsReqMsg), NULL);
|
|
|
- }
|
|
|
- osMessageQueueGet(gpsMsgQueue, &Gpsmsg, 0, 2000);
|
|
|
- if(Gpsmsg.dataPtr)
|
|
|
- {
|
|
|
- #ifdef USING_PRINTF
|
|
|
- printf("GpsProcess Main: %s\r\n",Gpsmsg.dataPtr);
|
|
|
- #endif
|
|
|
- }
|
|
|
- NetSocDisplay(LED_SOC_1,LED_TURN_ON);
|
|
|
#ifdef USING_PRINTF
|
|
|
printf("Uart work!\n");
|
|
|
#endif
|
|
|
Uart_task = false;
|
|
|
Uart_Rece_buffer = (uint8_t *)malloc(Uart_Rece_LEN);
|
|
|
-
|
|
|
while(!Uart_task)
|
|
|
{
|
|
|
switch (Rece_index)
|
|
@@ -577,7 +568,6 @@ static void Uart_Task(void* arg)
|
|
|
}
|
|
|
case PROCESS_UART_STATE_SLEEP:
|
|
|
{
|
|
|
- posGGAServiceStop();
|
|
|
slpManPlatVoteEnableSleep(UartSlpHandler, SLP_SLP2_STATE);
|
|
|
while(true)
|
|
|
{
|
|
@@ -624,6 +614,9 @@ static void Can_Task(void* arg)
|
|
|
slpManPlatVoteDisableSleep(CanSlpHandler, SLP_SLP2_STATE);
|
|
|
volatile bool Can_Flag=false;
|
|
|
PROC_CAN_STATE_SWITCH(PROCESS_CAN_STATE_IDLE);
|
|
|
+ GPS_INFO Gps_Data;
|
|
|
+ posGGAServiceStart(GGACallBack);
|
|
|
+
|
|
|
while(1)
|
|
|
{
|
|
|
switch(gProcess_Can_Task)
|
|
@@ -636,6 +629,18 @@ static void Can_Task(void* arg)
|
|
|
}
|
|
|
case PROCESS_CAN_STATE_RECV:
|
|
|
{
|
|
|
+
|
|
|
+ //加入GPS启动程序
|
|
|
+ if(gpsMsgQueue == NULL)
|
|
|
+ {
|
|
|
+ gpsMsgQueue = osMessageQueueNew(1,sizeof(GPS_INFO), NULL);
|
|
|
+ }
|
|
|
+ osMessageQueueGet(gpsMsgQueue, &Gps_Data, 0, 1000);
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ printf("Gpsmsgqueue: %d,%d,%d,%d\r\n\n",Gps_Data.latitude,Gps_Data.longitude,Gps_Data.speed,Gps_Data.direction);
|
|
|
+ #endif
|
|
|
+
|
|
|
+
|
|
|
//can采用先接收后发送的策略
|
|
|
HAL_Can_Receive(Can_Rece_buffer);
|
|
|
if (Can_Rece_buffer[0]!=0xff)//满足can发送使能
|
|
@@ -645,6 +650,7 @@ static void Can_Task(void* arg)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ PROC_CAN_STATE_SWITCH(PROCESS_CAN_STATE_IDLE);
|
|
|
Can_Enable = false;
|
|
|
}
|
|
|
break;
|
|
@@ -798,7 +804,22 @@ static void Can_Task(void* arg)
|
|
|
}
|
|
|
case PROCESS_CAN_STATE_SLEEP:
|
|
|
{
|
|
|
+ posGGAServiceStop();
|
|
|
+ slpManSlpState_t State;
|
|
|
+ uint8_t cnt;
|
|
|
+ if(slpManCheckVoteState(CanSlpHandler, &State, &cnt)==RET_TRUE)
|
|
|
+ {
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ printf("[%d]We Can Check Vote Can State, state=%d, cnt=%d\r\n",__LINE__,State,cnt);
|
|
|
+ #endif
|
|
|
+ }
|
|
|
slpManPlatVoteEnableSleep(CanSlpHandler, SLP_SLP2_STATE);
|
|
|
+ if(slpManCheckVoteState(CanSlpHandler, &State, &cnt)==RET_TRUE)
|
|
|
+ {
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ printf("[%d]We Can Check Vote can State Again, state=%d, cnt=%d\r\n",__LINE__,State,cnt);
|
|
|
+ #endif
|
|
|
+ }
|
|
|
while(true)
|
|
|
{
|
|
|
osDelay(5000/portTICK_PERIOD_MS);
|
|
@@ -865,7 +886,7 @@ void Can_Task_Init()
|
|
|
void appInit(void *arg)
|
|
|
{
|
|
|
Main_Task_Init();
|
|
|
- Uart_Task_Init();
|
|
|
+ //Uart_Task_Init(); 暂时屏蔽Uart读取
|
|
|
Can_Task_Init();
|
|
|
GpsTaskInit();
|
|
|
}
|