// Copyright 2020-2021 Beken // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include #include #include #include #include #include #include "bk_list.h" #include "media_core.h" #include "media_evt.h" #include "media_mailbox_list_util.h" #define TAG "app_test" #define LOGI(...) BK_LOGW(TAG, ##__VA_ARGS__) #define LOGW(...) BK_LOGW(TAG, ##__VA_ARGS__) #define LOGE(...) BK_LOGE(TAG, ##__VA_ARGS__) #define LOGD(...) BK_LOGD(TAG, ##__VA_ARGS__) //static LIST_HEADER_T mailbox_app_test_msg_queue; static beken_thread_t mailbox_app_test_th_hd = NULL; beken_semaphore_t mailbox_app_test_sem = NULL; bk_err_t mailbox_app_test_send_msg(uint32_t event, void *param) { bk_err_t ret = BK_OK; uint32_t result = BK_OK; media_mailbox_msg_t *node = NULL; node = os_malloc(sizeof(media_mailbox_msg_t)); if (node != NULL) { node->event = event; node->dest = 0; node->src = 1; node->param = (uint32_t)param; node->result = result; node->sem = mailbox_app_test_sem; // LOGE("====>>>>1 %s\n", __func__); msg_send_to_media_app_mailbox(node); ret = rtos_get_semaphore(&mailbox_app_test_sem, BEKEN_WAIT_FOREVER); if (ret != BK_OK) { LOGE("%s, rtos_get_semaphore\n", __func__); ret = BK_FAIL; } else { ret = result; } } else { LOGE("%s, no mem\n", __func__); ret = BK_ERR_NO_MEM; } if (node) { os_free(node); } return ret; } static void mailbox_app_test_message_handle(void) { bk_err_t ret = BK_OK; (void)(ret); LOGE("%s\n", __func__); rtos_delay_milliseconds(1000); while (1) { ret = mailbox_app_test_send_msg(EVENT_LCD_OPEN_REQ, NULL); LOGE("%s EVENT_LCD_OPEN_REQ %d\n", __func__, ret); rtos_delay_milliseconds(1000); } goto exit; exit: if (mailbox_app_test_sem) { rtos_deinit_semaphore(&mailbox_app_test_sem); } /* delate task */ rtos_delete_thread(NULL); mailbox_app_test_th_hd = NULL; LOGE("delete task complete\n"); } bk_err_t media_app_test_init(void) { bk_err_t ret = BK_OK; if (mailbox_app_test_sem != NULL) { LOGE("%s, mailbox app semaphore already init, exit!\n", __func__); goto exit; } ret = rtos_init_semaphore(&mailbox_app_test_sem, 1); if (ret != BK_OK) { LOGE("%s, create mailbox app test semaphore failed\n", __func__); goto error; } if (mailbox_app_test_th_hd != NULL) { ret = BK_OK; LOGE("%s, mailbox_app_test_th_hd already init, exit!\n", __func__); goto error; } ret = rtos_create_thread(&mailbox_app_test_th_hd, 6, "mailbox_app_test_thread", (beken_thread_function_t)mailbox_app_test_message_handle, 2048, NULL); if (ret != BK_OK) { LOGE("create mailbox app test thread fail\n"); goto error; } LOGI("====>>>>mailbox app test thread startup complete\n"); return BK_OK; error: if (mailbox_app_test_sem) { rtos_deinit_semaphore(&mailbox_app_test_sem); } exit: return ret; }