/***************************************************************************** Prototype : BSP_MailBox_SpMsgWrite Description : 专有邮箱(Special Mailbox)的写接口 (由调用者保证调用接口时DSP处于非睡眠状态) Input : ulAddr : 专有邮箱的偏移地址(从消息头开始的地址) ulSize : 初始值的大小(以字节为单位) pData : 数据信息(不包含消息头信息) Return Value : BSP_OK: 表示操作成功 ERR_MAILBOX_COVER: 表示前一条原语未被读走,覆盖 ERR_MAILBOX_WRITE_FAILED: 写失败 ERR_MAILBOX_NOT_INIT: 邮箱未初始化 ERR_MAILBOX_PARAM_INCORRECT: 参数错误 *****************************************************************************/ u32 BSP_MailBox_SpMsgWrite(u32 ulAddr, u32 ulSize, void* pData) { s32 key = 0; u32 ret = 0; if(!(g_stMbxCtrl.bMbxInit)) { g_stMbxMntn.stAbnormal.ulNInitSlic = BSP_GetSliceValue(); return ERR_MAILBOX_NOT_INIT; } if((BSP_NULL == pData) || (0 == ulSize)) { return ERR_MAILBOX_PARAM_INCORRECT; } key = intLock(); ret = MailBox_SpMsgWrite(ulAddr, ulSize, pData); intUnlock(key); return ret; }
/***************************************************************************** Prototype : BSP_MailBox_SpMsgWrite Description : 专有邮箱(Special Mailbox)的写接口 (由调用者保证调用接口时DSP处于非睡眠状态) Input : ulAddr : 专有邮箱的偏移地址(从消息头开始的地址) ulSize : 初始值的大小(以字节为单位) pData : 数据信息(不包含消息头信息) Return Value : BSP_OK: 表示操作成功 ERR_MAILBOX_COVER: 表示前一条原语未被读走,覆盖 ERR_MAILBOX_WRITE_FAILED: 写失败 ERR_MAILBOX_NOT_INIT: 邮箱未初始化 ERR_MAILBOX_PARAM_INCORRECT: 参数错误 *****************************************************************************/ u32 BSP_MailBox_SpMsgWrite(u32 ulAddr, u32 ulSize, void* pData) { unsigned long key = 0; u32 ret = 0; if(!(g_stMbxCtrl.bMbxInit)) { g_stMbxMntn.stAbnormal.ulNInitSlic = BSP_GetSliceValue(); return ERR_MAILBOX_NOT_INIT; } if((BSP_NULL == pData) || (0 == ulSize)) { return ERR_MAILBOX_PARAM_INCORRECT; } local_irq_save(key); ret = MailBox_SpMsgWrite(ulAddr, ulSize, pData); local_irq_restore(key); return ret; }