b_mod_error

数据结构

typedef void (*pecb)(uint8_t err);   //错误发生后的回调

#define INVALID_ERR ((uint8_t)0xFF)

#define BERROR_LEVEL_0 0X00    //错误等级0,调用回调后自动从队列中移除
#define BERROR_LEVEL_1 0X01    //错误等级1,需要手动从队列移除 

接口介绍

//初始化并传入回调函数
int bErrorInit(pecb cb);
//注册错误,err:错误号 level:错误等级
//interval_ms:间隔时间,level为BERROR_LEVEL_1时有效。
//当错误发生后执行一次回调,如果错误没有被清除,则interval_ms时间后再次执行回调
int bErrorRegist(uint8_t err, uint32_t interval_ms, uint32_t level);
//清除指定的错误
int bErrorClear(uint8_t e_no);
//查询错误是否存在
int bErrorIsExist(uint8_t e_no);
//查询错误队列是否为空,即没有错误发生或者发生的错误都已经被处理
int bErrorIsEmpty(void);

使用例子

#define BAT_LOW (0)
#define MEM_ERR (1)

void SystemErrCallback(uint8_t err)
{
    b_log_e("err:%d\r\n", err);
}

int main()
{
    ...
    bInit();
    bErrorInit(SystemErrCallback);
    bErrorRegist(BAT_LOW, 3000, BERROR_LEVEL_1); //当错误发生时调用
    bErrorRegist(MEM_ERR, 0, BERROR_LEVEL_0);    //当错误发生时调用
    ...
}