You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.7 KiB
69 lines
1.7 KiB
#pragma once
|
|
#include <stdint.h>
|
|
|
|
#include <functional>
|
|
|
|
#include "appevent_type.hpp"
|
|
extern "C" {
|
|
#include "uicontroler/tjc/tjc_base_type.h"
|
|
#include "app_protocols/ble_through/ble_proto.h"
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @注意
|
|
* 下面这个结构不易定义过大,否则容易造成栈溢出
|
|
*/
|
|
|
|
// typedef struct {
|
|
// } AppEvent;
|
|
|
|
|
|
struct AcidStateChangeEvent {
|
|
enum AcidStatChangeEventType subtype;
|
|
|
|
// 添加
|
|
uint8_t addCh;
|
|
float addChVal;
|
|
|
|
// 使用
|
|
float useVal[4];
|
|
};
|
|
typedef struct AcidStateChangeEvent AcidStateChangeEvent_t;
|
|
typedef enum AcidStatChangeEventType AcidStatChangeEventType_t;
|
|
|
|
class AppEvent {
|
|
public:
|
|
AppEventType_t type;
|
|
std::function<void()> onfnc = nullptr;
|
|
const char* onfncmask = nullptr;
|
|
|
|
private:
|
|
uint8_t buf[30];
|
|
UIEvent* uieventpointer = nullptr;
|
|
|
|
public:
|
|
AppEvent() {
|
|
static_assert(sizeof(buf) >= sizeof(AcidStateChangeEvent_t), "buf size must be larger than AcidStateChangeEvent_t");
|
|
memset(buf, 0, sizeof(buf));
|
|
}
|
|
|
|
public:
|
|
int getBufSize() { return sizeof(buf); }
|
|
|
|
void setPageChangeTo(int32_t page) { *(int32_t*)buf = page; }
|
|
int32_t getPageChangeTo() { return *(int32_t*)buf; }
|
|
|
|
void setHeartInfo(uint8_t *heart_info) { memcpy(buf, heart_info, sizeof(zble_heart_t)); }
|
|
uint8_t* getHeartInfo() { return (uint8_t *)buf; }
|
|
|
|
void setStateDisplayInfo(const char* info) { strncpy((char*)buf, info, sizeof(buf)); }
|
|
char* getStateDisplayInfo() { return (char*)buf; }
|
|
|
|
UIEvent* getUIEvent() { return uieventpointer; }
|
|
void setUIEvent(UIEvent* event) { uieventpointer = event; }
|
|
|
|
AcidStateChangeEvent_t* getAcidStateChangeEvent() { return (AcidStateChangeEvent_t*)buf; }
|
|
|
|
void setOnFnc(std::function<void()> fnc) { onfnc = fnc; }
|
|
};
|