一、什么是TMOS
- TMOS 是沁恒微电子针对蓝牙协议栈开发的时间片轮询系统,简化版的OSAL,是通过轮询的方式来不断地查询事件实现的系统,不支持抢占任务
- TMOS系统时间基准为 625us,时钟来源为RTC
- 多任务管理方式实际上只有一个任务在运行
- 通过任务调度的策略将多个任务进行调度,每个任务占用一定的时间,所有的任务通过时间分片的方式处理
二、常用的API(应用程序接口)
tmosTaskID TMOS_ProcessEventRegister( pTaskEventHandlerFn eventCb );
bStatus_t tmos_set_event( tmosTaskID taskID, tmosEvents event );
bStatus_t tmos_start_task( tmosTaskID taskID, tmosEvents event, tmosTimer time );
bStatus_t tmos_start_reload_task( tmosTaskID taskID, tmosEvents event, tmosTimer time );
bStatus_t tmos_stop_task( tmosTaskID taskID, tmosEvents event );
tmosTimer tmos_get_task_timer( tmosTaskID taskID, tmosEvents event );
bStatus_t tmos_msg_send( tmosTaskID taskID, uint8_t *msg_ptr );
uint8_t *tmos_msg_receive( tmosTaskID taskID );
uint8_t *tmos_msg_allocate( uint16_t len );
bStatus_t tmos_msg_deallocate( uint8_t *msg_ptr );
uint8_t tmos_snv_read( uint8_t id, uint8_t len, void *pBuf);
void TMOS_SystemProcess( void );
uint32_t TMOS_GetSystemClock( void );
uint32_t tmos_rand( void );
bool tmos_memcmp( const void *src1, const void *src2, uint32_t len );
bool tmos_isbufset( uint8_t *buf, uint8_t val, uint32_t len );
uint32_t tmos_strlen( char *pString