/*
*********************************************************************************************************
*                                       IAR Development Kits
*                                              on the
*
*                                    M451
*
* Filename      : uart_dtu.h
* Version       : V1.00
* Programmer(s) : Qian Xianghong
*********************************************************************************************************
*/

#ifndef  USER_UART_DTU_PRESENT
#define  USER_UART_DTU_PRESENT

#include "type.h"

// 初始化引脚

// 打开设备和允许中断
void DTU_Open(void);

// 任务主体
void DTU_Task0(uint8_t c);
void DTU_Task(void *p_arg);

// 从服务器获取当前时间
void DTU_setOffsetSecondsFromServer();

// 信号量，用于通知执行任务		
extern SemaphoreHandle_t DTU_semUpgrade;		

extern loopbuff_t DTU_TaskM;

// 这个缓冲区比较大，不放在stack里面
#define DTU_GPSDATA_SIZE 120
extern char DTU_gpsData[2][DTU_GPSDATA_SIZE]; // 扩展内存
#define DTU_RECVBUFF_SIZE 200
extern char DTU_recvBuff[DTU_RECVBUFF_SIZE]; // 扩展内存

// 发送成功时间
extern volatile uint32_t DTU_succTime;

// DTU_Task任务和服务器之间的收发缓冲
#define TASK_SENDBUFF_SIZE	400
extern uint8_t Task_sendBuff[TASK_SENDBUFF_SIZE]; // 扩展内存

// 计算2个坐标之间的距离
double GetDistance(int32_t lat1, int32_t lng1, int32_t lat2, int32_t lng2);

uint8_t pack_gprs_tran_data(ext_data_t *pGprs, uint8_t is4G);
uint8_t pack_modbus_tran_data(ext_data_t *pGprs);

#endif
