BC26 OpenCPU System API接口

System部分的API接口和RTOS常用的API接口类似。
BC26 OpenCPU SDK:https://github.com/sanjaywu/BC26-OpenCpu

1、重启系统

void Ql_Reset(u8 resetType);
  • 入口参数:
    resetType: 必须为0。

2、挂起当前任务直到时间超时

void Ql_Sleep(u32 msec);
  • 入口参数:

    msec:任务挂起的时间,单位:ms。

  • 注意事项:任务挂起时间不能太长,否则任务会接收到很多消息而无法处理,导致系统自动重启。

3、获取SDK版本

 s32  Ql_GetSDKVer(u8* ptrVer, u32 len);
  • 入口参数:

    ptrVer:保存SDK版本信息缓存区,要求至少20字节大小。
    len:缓存区长度。

  • 返回参数:

    获取成功:返回SDK版本信息长度。
    获取失败:则返回错误码。

4、从当前消息队列获取消息,如果当前消息队列没有消息,则会处于等待状态

s32 Ql_OS_GetMessage(ST_MSG* msg);
  • 入口参数:

    ST_MSG:ST_MSG指针:

typedef struct {
       u32  message;
       u32  param1;
       u32  param2;
       u32  srcTaskId;
} ST_MSG;
  • 返回参数:一直返回 QL_RET_OK。

5、在ISR中发送消息到其它任务(psm-eint回调除外)

s32 Ql_OS_SendMessageFromISR(s32 destTaskId, u32 msgId, u32 param1, u32 param2);
  • 入口参数:

    destTaskId: 发送消息到目的地任务的ID。
    msgId: 消息ID,必须大于0xFF。
    param1、param2: 发送给其它任务的参数

  • 返回参数:

    OS_SUCCESS:发送成功。
    OS_INVALID_ID:ID无效。
    OS_MEMORY_NOT_VALID:内存不足。
    OS_Q_FULL:消息队列已满。

6、在任务间发送消息。

s32 Ql_OS_SendMessage(s32 destTaskId, u32 msgId, u32 param1, u32 param2);
  • 入口参数:

    destTaskId: 发送消息到目的地任务的ID。
    msgId: 消息ID,必须大于0xFF.
    param1、param2: 发送给其它任务的参数

  • 返回参数:

    OS_SUCCESS:发送成功。
    OS_INVALID_ID:ID无效。
    OS_MEMORY_NOT_VALID:内存不足。
    OS_Q_FULL:消息队列已满。

7、创建互斥量

u32 Ql_OS_CreateMutex(void);
  • 返回参数:

    创建成功:互斥量句柄,Mutex Id。
    创建失败:0。

8、获取互斥量

void Ql_OS_TakeMutex(u32 mutexId,u32 block_time);
  • 入口参数:

    mutexId:互斥量句柄。
    block_time:阻塞等待互斥量时间,单位:ms。

9、释放互斥量

void Ql_OS_GiveMutex(u32 mutexId);
  • 入口参数:

    mutexId:互斥量句柄。

10、创建计数型信号量

u32 Ql_OS_CreateSemaphore(u32 maxCount,u32 InitialCount);
  • 入口参数:

    maxCount:可以达到的最大计数值。当信号量达到这个值时,就不能再“给定”。
    InitialCount:创建时分配的信号量值。

  • 返回参数:

    创建成功:信号量句柄。
    创建失败:0。

11、获取计数型信号量

u32 Ql_OS_TakeSemaphore(u32 semId, u32 block_time);
  • 入口参数:

    semId:要获取的信号量句柄。
    block_time:阻塞等待信号量时间,单位:ms。

  • 返回参数:

    TRUE:在等待时间内获取信号量成功。
    FALSE:在等待时间内获取信号量失败。

12、释放计数型信号量

void Ql_OS_GiveSemaphore(u32 semId);
  • 入口参数:

    semId:要释放的信号量句柄。

13、创建事件集,一个事件集有多个事件标志组成,每个事件集能包含10个事件标志

u32 Ql_OS_CreateEvent(void);
  • 返回参数:

    返回一个独一无二的事件集句柄。

14、等待事件

s32 Ql_OS_WaitEvent(u32 evtId, u32 evtFlag,u32 block_time);
  • 入口参数:

    evtId:要等待的事件集句柄。
    evtFlag:获取到的事件标志值。
    block_time:等待阻塞时间。

  • 返回参数:

    获取事件成功:返回0。
    获取事件失败:返回一个非0值。

15、发送事件标志

s32 Ql_OS_SetEvent(u32 evtId, u32 evtFlag);
  • 入口参数:

    evtId:要发送的事件集句柄。
    evtFlag:要发送的事件标志值。

  • 返回参数:

    发送事件成功:返回0。
    发送事件失败:返回一个非0值。

16、设置错误码

s32 Ql_SetLastErrorCode(s32 errCode);
  • 入口参数:

    errCode:要设置的错误码。

  • 返回参数:

    QL_RET_OK:执行成功。
    QL_RET_ERR_FATAL:设置错误码失败。

17、获取错误码

s32 Ql_GetLastErrorCode(void);
  • 返回参数:调用任务的最后一个错误代码。

18、获取当前任务优先级

u32 Ql_OS_GetCurrentTaskPriority(void);
  • 返回参数:任务的优先级大小,范围在200~255。

19、获取当前任务堆栈中剩余的字节数

u32 Ql_OS_GetCurrenTaskLeftStackSize(void);
  • 返回参数:堆栈大小,范围在1024~10*1024

20、将数据保存到NVRAM里面,掉电不丢失

s32 Ql_SecureData_Store(u8 index , u8* pData, u32 len);
  • 入口参数:

    index:NVRAM块索引,1或2。
    pData:要保存的数据,最多只能保存50字节。
    len:要保存的数据大小。

  • 返回参数:

    QL_RET_OK: 保存成功。
    QL_RET_ERR_PARAM: 保存失败,参数无效。

21、从NVRAM里面读取数据

s32 Ql_SecureData_Read(u8 index, u8* pBuffer, u32 len);
  • 入口参数:

    index:要读取的NVRAM块索引,1或2。
    pBuffer:保存读取到数据指针。
    len:读取到的数据大小,最大50字节。

  • 返回参数:

    QL_RET_OK: 读取成功。
    QL_RET_ERR_PARAM: 读取失败,参数无效。

注意事项:OpenCPU设计了2块系统存储空间来备份关键用户数据。开发者可以指定第一个参数索引[1-2]来指定不同的存储块,每个存储块可以存储50字节的数据。

你可能感兴趣的:(IOT)