/*
*********************************************************************************************************
*                                       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_Init(void);

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

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

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

// 信号量，用于通知执行任务		
extern volatile uint8_t DTU_semGPS;		
extern volatile uint8_t DTU_semGPRS;		
extern volatile uint8_t DTU_semSync;

// 是否GPS定位
extern volatile uint8_t GPS_Locate;
extern volatile uint8_t GPS_Located;
// 定位等待时间
extern volatile uint32_t GPS_waitTick;
extern volatile uint8_t GPS_Waiting;
// GPS发送数据
extern volatile uint32_t GPS_tranTick;

// 发送成功时间
extern volatile uint32_t DTU_succTime;
// 强制上传数据
extern volatile uint8_t DTU_dataConn;
// 强制连接维护平台
extern volatile uint8_t DTU_ldmsConn;

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]; // 扩展内存

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

#endif
