OSAL (Operating System Abstraction Layer)
一,
Task Initialization
二,
Task Events and Event Processing
1
事件标志
是
16bit
的值,(系统保留事件标志
0x8000
被
SYS_EVENT_MSG
使用)。
为了使用SOAL ,在main函数的最后需要名为osal_start_system()的进程来调用启动函数 osalInitTasks(),osalInitTask()逐个调用BLE协议栈各层启动进程进行初始化操
作。 随后设置一个任务ID(TaskID:大小为8bit),跳入循环等待执行任务,系统启动完成。
2
事件数组
tasksArr
3
产生事件的两种方式:
1)osal_set_event
();
(prototype in OSAL.h
)
2
)
osal_start_timerEx
();
(prototype in OSAL_Timers.h)
三,
OSAL Messages
osal_msg_allocate
申请发送信息的空间(内部已经使用了
osal_mem_alloc
),然后使用
osal_msg_send
发送其他任务。
当消息到达时,
SYS_EVENT_MSG
置位,并使用
osal_msg_receive
接收信息。
手册建议每一个任务的消息都建立独立的消息处理函数。最后使用
osal_msg_deallocate
)内部已经使用了
osal_mem_free
)释放空间。