📄 main.c
字号:
/********************************************************************************************************/
#define HOSTVAR
#include "config.h"
/********************************************************************************************************/
int main (void)
{
uint8 err;
SysInit();
OSInit();
OSTaskCreate(SysInitTask, (void *)0, &SysInitTask_stack[SYSINIT_TASK_STK_SIZE - 1], SysInitTask_PRIO);
Data_Rev_Queue = OSQCreate((void*)&Queue[0], QUEUE_SIZE);
VideoMbox = OSMboxCreate(NULL);
EchoMbox = OSMboxCreate(NULL);
ListSem = OSSemCreate (1);
Uart0_Sem = OSSemCreate (1);
VoiceMbox = OSMboxCreate(NULL);
Pic_Mem = OSMemCreate((void *)Pic_Data_Buf, PIC_BUF_NUM, PIC_BUF_SIZE, &err);
OSStart();
return 0;
}
uint8 SPI1_Oper(uint8 data);
/********************************************************************************************************/
void SysInitTask(void *pdata)
{
pdata = pdata;
TargetInit();
while(1);
Read_EEprom_Data();
OSTaskCreate(DispatchTask, (void *)0, & DispatchTask_stack[DISPATCH_TASK_STK_SIZE - 1], DispatchTask_PRIO);
OSTaskCreate(Uart0ReviceTask, (void *)0, &Uart0Task_stack[UART0_TASK_STK_SIZE - 1], Uart0RevTask_PRIO); // 接收通信模块数据
OSTaskCreate(Uart1ReviceTask, (void *)0, &Uart1Task_stack[UART1_TASK_STK_SIZE - 1], Uart1RevTask_PRIO); // 接收GPS定位数据
OSTaskCreate(Uart2ReviceTask, (void *)0, &Uart2Task_stack[UART2_TASK_STK_SIZE - 1], Uart2RevTask_PRIO); // 接收图片采集模块数据
OSTaskCreate(Uart3ReviceTask, (void *)0, &Uart3Task_stack[UART3_TASK_STK_SIZE - 1], Uart3RevTask_PRIO); // 接收PC系统配置信息
OSTaskCreate(KeyInputTask, (void *)0, &KeyInputTask_stack[KEY_TASK_STK_SIZE - 1], KeyInputTask_PRIO);
//OSTaskCreate(TimerReviceTask, (void *)0, &TimerTask_stack[TIMER_TASK_STK_SIZE - 1], TimerTask_PRIO);
//OSTaskCreate(AlarmOutputTask, (void *)0, &AlarmOutputTask_stack[ALARM_TASK_STK_SIZE - 1], AlarmOutputTask_PRIO);
OSTaskDel (0);
}
uint8 my_value;
/********************************************************************************************************/
void DispatchTask(void *pdata)
{
REV_DATA *pmsg;
uint8 err, i;
pdata = pdata;
for( ; ; )
{
pmsg = OSQPend (Data_Rev_Queue, 0, &err);
switch(pmsg -> Data_Type)
{
case PIC_DEAL_HANDEL:
for (i = 0x00; i < 3; i++)
my_value = Send_Get_Pic_Order();
break;
case LOGIN_DEAL_HANDEL:
if (Login_flag == 0x01)
Send_GPS_Order();
else Send_Login_Order();
break;
case SEND_PIC_HANDEL:
Send_GPS_Order();
if (Alarm_Status == 0x01){
Send_Pic_Order();
Send_Call_Order();
Alarm_Status = 0x00;
}
break;
case LOGIN_PIC_HANDEL:
if (Login_flag == 0x01){
Send_GPS_Order();
Send_Pic_Order();
Send_Call_Order();
Alarm_Status = 0x00;
}
else Send_Login_Order();
break;
case SYS_CONFIG_HANDEL:
Save_Config_Data();
break;
case RECODE_HANDEL:
Get_Voice_Data();
break;
case DECODE_HANDEL:
Play_Voice_Oper();
break;
default:
break;
}//switch(pmsg -> DataType)
}//for( ; ; )
}
/********************************************************************************************************/
void Uart0ReviceTask(void *pdata)
{
uint8 rev_buf[90], value, checkcode, i;
uint16 size;
REV_DATA DataPack;
for(; ;){
rev_buf[0] = UART0Getch();
rev_buf[1] = UART0Getch();
rev_buf[2] = UART0Getch();
rev_buf[3] = UART0Getch();
rev_buf[4] = UART0Getch();
rev_buf[5] = UART0Getch();
#if 0
if (((rev_buf[0] = UART0Getch()) == '$')
&& ((rev_buf[1] = UART0Getch()) == 'G')
&& ((rev_buf[2] = UART0Getch()) == 'P')
&& ((rev_buf[3] = UART0Getch()) == 'R')
&& ((rev_buf[4] = UART0Getch()) == 'S')
&& ((rev_buf[5] = UART0Getch()) == 'C')
&& ((rev_buf[6] = UART0Getch()) == 'D')
&& ((rev_buf[7] = UART0Getch()) == 'M')
&& ((rev_buf[8] = UART0Getch()) == 'A')){
rev_buf[9] = value = UART0Getch();
rev_buf[10] = UART0Getch();
rev_buf[11] = UART0Getch();
size = (uint16)rev_buf[10] + (((uint16)rev_buf[11]) << 8);
for (i = 0x00; i < size; i++)
rev_buf[12 + i] = UART0Getch();
checkcode = UART0Getch();
if (CalCheckCode(rev_buf, checkcode, (uint8)(12 + size)) == SUCCESS){
switch(value)
{
case LOGIN_OK_CODE:
Login_flag = 0x01;
DataPack.Data_Type = SEND_PIC_HANDEL;
OSQPost(Data_Rev_Queue, &DataPack);
break;
case UNLOGIN_OK_CODE:
Login_flag = 0x00;
OSMboxPost(EchoMbox, &value);
break;
case CALL_ECHO_CODE:
OSMboxPost(EchoMbox, &rev_buf[12]);
break;
case PIC_OK_CODE:
OSMboxPost(EchoMbox, &rev_buf[12]);
break;
default:
break;
}// switch(value)
}// if (CalCheckCode(rev_buf, checkcode, 11) == SUCCESS)
}// if (((rev_buf[0] = UART0Getch()) == '$')
#endif
}// for(; ;){
}
/********************************************************************************************************/
void Uart1ReviceTask(void *pdata)
{
GPS_DATA temp_data; //接收GPS模块通信数据流
uint8 rev_buf[90];
for(; ;){
rev_buf[0] = UART1Getch();
rev_buf[1] = UART1Getch();
rev_buf[2] = UART1Getch();
rev_buf[3] = UART1Getch();
rev_buf[4] = UART1Getch();
rev_buf[5] = UART1Getch();
#if 0
if (Get_GPS_Info(&temp_data) == SUCCESS){
if (temp_data.Gps_Flag == 0x01){
OS_ENTER_CRITICAL();
Rev_GPS_Data = temp_data;
OS_EXIT_CRITICAL();
}
//IO0CLR = (IO0CLR & 0xffefffff) | (1 << 20);
//OSTimeDly(OS_TICKS_PER_SEC / 10);
//IO0SET = (IO0SET & 0xffefffff) | (1 << 20);
}
#endif
}// for(; ;){
}
/********************************************************************************************************/
void Uart2ReviceTask(void *pdata)
{
REV_DATA DataPack;
PIC_STR pic_buf;
uint8 rev_buf[12], pic_temp_buf[PACK_SIZE], check_code;
uint16 pack_size, i;
pdata = pdata;
for(; ;){
switch(Pic_Rev_Flag)
{
case 0x00:
if ((rev_buf[0] = UART2Getch()) == 0xaa){
rev_buf[1] = UART2Getch();
rev_buf[2] = UART2Getch();
rev_buf[3] = UART2Getch();
rev_buf[4] = UART2Getch();
rev_buf[5] = UART2Getch();
if ((rev_buf[2] == 0x0d) || (rev_buf[2] == 0x04)){
rev_buf[6] = UART2Getch();
rev_buf[7] = UART2Getch();
rev_buf[8] = UART2Getch();
rev_buf[9] = UART2Getch();
rev_buf[10] = UART2Getch();
rev_buf[11] = UART2Getch();
DataPack.Mode_Type_Info = rev_buf[7];
if ((rev_buf[7] == 0x0a) && (rev_buf[8] == 0x01))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -