//
//  ELMeatProbeBoxCustomDataModel.h
//  AILinkBleSDK
//

#import <Foundation/Foundation.h>
#import <AILinkBleSDK/ELMeatProbeBleTool.h>

NS_ASSUME_NONNULL_BEGIN

#pragma pack(1)
typedef struct ELMeatProbeBoxCustomDataStruct {

    UInt8 ver; //数据版本 (当前版本 0x02) //数据总长度: modelSize()

    UInt32 cookingId; //烧烤id (选择食物的时间戳)

    UInt8 foodType; //食物类型
    UInt8 foodRawness; //食物熟度
    SInt16 targetTemperature_C; //食物目标温度：℃
    SInt16 targetTemperature_F; //食物目标温度：℉

    SInt16 ambientMinTemperature_C; //炉温目标下限：℃
    SInt16 ambientMinTemperature_F; //炉温目标下限：℉

    SInt16 ambientMaxTemperature_C; //炉温目标上限：℃
    SInt16 ambientMaxTemperature_F; //炉温目标上限：℉
    
    double alarmTemperaturePercent; //提醒温度对目标温度百分比 0~1.0

    UInt32 timerStart;//计时开始时间戳
    UInt32 timerEnd;//计时结束时间戳

    UInt8 currentUnit; //当前温度单位
    
    SInt16 alarmTemperature_C; //食物提醒温度：℃
    SInt16 alarmTemperature_F; //食物提醒温度：℉
    
    UInt8 remarkBytes[32]; //UTF-8 编码
    
} ELMeatProbeBoxCustomDataStruct;
#pragma pack()

///
@interface ELMeatProbeBoxCustomDataModel : NSObject


@property (nonatomic, assign) ELMeatProbeBoxCustomDataStruct customStruct;

@property (nonatomic, assign, readonly) NSInteger ver;
@property (nonatomic, assign, readonly) NSInteger cookingId;
@property (nonatomic, assign, readonly) NSInteger foodType;
@property (nonatomic, assign, readonly) NSInteger foodRawness;

@property (nonatomic, assign) double alarmTemperaturePercent;
@property (nonatomic, assign, readonly) ELDeviceTemperatureUnit currentUnit;


+ (instancetype _Nullable)modelWithData:(NSData *)data;

- (NSData *)dataValue;

- (NSString *)remark;
- (NSString *)setRemark:(NSString *)remark;

+ (Byte)version;
+ (Byte)modelSize;

@end

NS_ASSUME_NONNULL_END
