#ifndef COMMSER_H
#define COMMSER_H

#include "Arduino.h"
#include "Ticker.h" //调用Ticker.h库
#include "FoodDeliveryBase.h"
#include "config.h"

// 枚举，表示飞行模式
enum FlightMode
{
	STABILIZE = 0, // 自稳模式
	ACRO = 1,	   // 特技模式
	ALT_HOLD = 2,  // 高度保持模式
	AUTO = 3,	   // 自动模式
	GUIDED = 4,	   // 指点模式
	LOITER = 5,	   // 悬停模式
	RTL = 6,	   // 自动返航模式
	LAND = 9,	   // 降落模式
	POSHOLD = 16,  // 位置保持模式
};
extern void mqtt_receiveCallback(char *topic, byte *payload, unsigned int length);
extern void pubThread();
extern void addLogMessage(const String &msg);
extern void refreshRequest();
extern void set_rc_channels(uint16_t channel_values[], uint8_t num_channels);
extern void set_mode(FlightMode mode);
extern void resetCompass();
extern void initAcce();
extern void initAccea();
extern void lock_or_unlock(bool islock);
extern void fly_to_location(double lat, double lon, double alt);
extern void fly_to_altitude(double alt);
extern void writeRoute(String topicStr);
extern void mavlink_receiveCallback(uint8_t c);
extern const String topicPub[];
extern const int topicPubCount;
extern String topicPubMsg[];
extern String oldMsg[];
extern String topicHandle[];
extern FoodCube fc;		 // 创建项目对象
extern Ticker pubTicker; // 定时发布主题 线程
extern Ticker mavTicker; // 定时 指定飞控mavlink 串口返回的数据类别 防止飞控启动滞后
#endif