コード例 #1
0
ファイル: mml_user.c プロジェクト: axenhook/ideal-potato
/*******************************************************************************
函数名称: MML_Exit
功能说明: 无
输入参数: 无
输出参数: 无
返 回 值:
    >=0: 成功
    < 0: 错误代码
作    者: 曾华荣 ([email protected])
修改时间: 2012年4月15日
说    明: 无
*******************************************************************************/
void MML_Exit(int32_t v_para)
{
    int32_t ret = 0;

    g_exit = B_TRUE;
    ret = SEND_CMD(MML_CMD_INIT);
    if (0 != ret)
    {
        OS_PRINT("Send cmd failed. cmd: %d, ret: %d\n", MML_CMD_INIT, ret);
    }

    return;
}
コード例 #2
0
/* This is user space implementation of osal_firmware_request()
   It copies fw image file to a malloced buffer and update the
   size and buffer pointer in fw_ctxt.
*/
osal_result os_firmware_request(const char *fw_image_fs_path,
                                os_firmware_t *fw_ctxt)
{
   FILE *fp = NULL;
   osal_result os_ret = OSAL_ERROR;

   if ( NULL != fw_ctxt) {
      fp = fopen(fw_image_fs_path, "rb");
      if (NULL != fp) {
         fseek(fp, 0L, SEEK_END);
         fw_ctxt->fw_size = ftell(fp); /* get image size */
         fseek(fp, 0L, SEEK_SET );
     
         /*Allocate buffer for fw image */ 
         fw_ctxt->fw_address = OS_ALLOC(fw_ctxt->fw_size);
         if (NULL != fw_ctxt->fw_address) {
            size_t data_read;

            data_read = fread(fw_ctxt->fw_address, 1, fw_ctxt->fw_size, fp);

            if (data_read == fw_ctxt->fw_size) {
               os_ret = OSAL_SUCCESS;       
            }
         }

         fclose(fp);
      } else {
         OS_PRINT("ERR: %s file not found \n", fw_image_fs_path);
      }
   } else {
      os_ret = OSAL_INVALID_PARAM;
      OS_PRINT("ERR: fw_ctxt is NULL\n");
   }

   return os_ret;
}
コード例 #3
0
ファイル: mml_user.c プロジェクト: axenhook/ideal-potato
/*******************************************************************************
函数名称: MmlSendCmd
功能说明: 无
输入参数: 无
输出参数: 无
返 回 值:
    >=0: 成功
    < 0: 错误代码
作    者: 曾华荣 ([email protected])
修改时间: 2012年4月15日
说    明: 无
*******************************************************************************/
void MmlSendCmd(void)
{
    int32_t ret = 0;
    uint32_t waitTimeCnt = 0;

    /* 初始化 */
    memset(&g_userCmd, 0, sizeof(g_userCmd));
    g_userCmd.status = MML_STATUS_INIT;
    g_exit = B_FALSE;

    /* 注册信号函数 */
	signal(SIGINT, MML_Exit);
	signal(SIGKILL, MML_Exit);
	signal(SIGTERM, MML_Exit);
    
    /* 发送命令 */
    g_userCmd.status = MML_STATUS_INPUT_OK;
    ret = SEND_CMD(MML_CMD_PROCESS_CMD);
    if (0 != ret)
    {
        OS_PRINT("Send cmd failed. cmd: %d, ret: %d\n", MML_CMD_PROCESS_CMD, ret);
        MML_Exit(0);
        return;
    }

    /* 检查命令执行结果 */
    while (B_FALSE == g_exit)
    {
        if ((MML_STATUS_INIT == g_userCmd.status)
            || (MML_STATUS_OUTPUT_BEGIN == g_userCmd.status))
        {
            if (MML_STATUS_INIT == g_userCmd.status)
            {
                waitTimeCnt += MML_WAIT_TIME;
                if (MML_WAIT_TIMEOUT < waitTimeCnt)
                {
                    OS_PRINT("Wait for result overtime.\n");
                    MML_Exit(0);
                    return;
                }
            }
            
            ret = SEND_CMD(MML_CMD_GET_RESULT);
            if (0 != ret)
            {
                OS_PRINT("Send cmd failed. cmd: %d, ret: %d\n", MML_CMD_GET_RESULT, ret);
                MML_Exit(0);
                return;
            }

            OS_SLEEP_MS(MML_WAIT_TIME);
        }

        waitTimeCnt = 0;
        OS_PRINT("%s", g_userCmd.dat);

        if (MML_STATUS_OUTPUT_CONTINUE == g_userCmd.status)
        {
            g_userCmd.status = MML_STATUS_OUTPUT_BEGIN;
        }
        else if (MML_STATUS_OUTPUT_END == g_userCmd.status)
        {
            break;
        }
    }

    MML_Exit(0);

    return;
}