/* * Copyright (C) 2013 SAMSUNG S.LSI * * 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. * */ #ifndef OSI_H #define OSI_H /************************************************************************ ** OS Interface *************************************************************************/ #include #include /************************************************************************ ** public functions *************************************************************************/ /* * Function OSI_init * * Description This function is called to initialize OSI context. * * Return OSI_FAIL if any problem * OSI_OK if initialization is succeeded. */ OSI_STATE OSI_init(void); /* * Function OSI_deinit * * Description This function is called to deinitialize OSI context. * */ void OSI_deinit(void); /* * Function OSI_delay * * Description This function is called to delay. * * Parameter timeout(input): ms * * Return * */ void OSI_delay(uint32_t timeout); /*************** * OSI TASK ***************/ /* * Function OSI_task_allocate * * Description This function is called to create a new task. * * Parameter task_name(input): * task_entry(input): entry function. * * Return OSI_TASK_HANDLE if allocate is succeeded, * NULL if any problem. */ tOSI_TASK_HANDLER OSI_task_allocate(const char* task_name, tOSI_TASK_ENTRY task_entry); /* * Function OSI_task_run * * Description This function is called to create a new task. * * Parameter OSI_TASK_HANDLE(input): target task * * Return OSI_OK if creadtion is succeeded, * OSI_FAIL if any problem. */ OSI_STATE OSI_task_run(tOSI_TASK_HANDLER task_handler); /* * Function OSI_task_isRun * * Description Check the task is running or not. * * Parameter task_handler(input): Target task handler to check running * * Return OSI_RUN, on run. * OSI_FAIL, on error. */ OSI_STATE OSI_task_isRun(tOSI_TASK_HANDLER task_handler); /* * Function OSI_task_kill * * Description This function is called to kill a task. * * Parameter task_handler(input): Target task handler to kill. * * Return OSI_OK, on success. * other, on error. */ OSI_STATE OSI_task_kill(tOSI_TASK_HANDLER task_handler); /* * Function OSI_task_stop * * Description This function is called to stop a task. * * Parameter task_handler(input): Target task handler to kill. * * Return OSI_OK, on success. * other, on error. */ OSI_STATE OSI_task_stop(tOSI_TASK_HANDLER task_handler); /* * Function OSI_task_free * * Description This function is called to free a task. * * Parameter task_handler(input): Target task handler to kill. * * Return OSI_OK, on success. * other, on error. */ OSI_STATE OSI_task_free(tOSI_TASK_HANDLER task_handler); /* * Function OSI_task_get_handler * * Description This function is called to get handler by task name. * * Parameter name(input): Target name to get handler. * * Return tOSI_TASK_HANDLER, on success. * NULL, on error. */ tOSI_TASK_HANDLER OSI_task_get_handler(char* name); /*************** * OSI MEMORY ***************/ /* * Function OSI_mem_get * * Description This function is called to get memeory. * * Parameter size(input): it should be small than OSI_MEM_POLL_SIZE * * Return Memory address if getting is succeeded, * NULL if any problem. */ tOSI_MEM_HANDLER OSI_mem_get(size_t size); /* * Function OSI_mem_free * * Description This function is called to free memeory. * * Parameter target(input): * * Return */ void OSI_mem_free(tOSI_MEM_HANDLER target); /** queue **/ /* * Function OSI_queue_allocate * * Description This function is called to get a free queue. * Anyone using OSI can access this message que. * * Parameter name(input): que_name * * Return tOSI_QUEUE_HANDLER if init is succeeded. * NULL if any problem. */ tOSI_QUEUE_HANDLER OSI_queue_allocate(const char* que_name); /* * Function OSI_queue_put * * Description This function is called to put data to the queue. * * Parameter que (input): queue handler. * data (input): void * data to put the stack. * * Return number of element in target queue * */ int OSI_queue_put(tOSI_QUEUE_HANDLER queue, void* p_data); /* * Function OSI_queue_get * * Description This function is called to get data from the queue. * * Parameter que (input): queue handler. * * Return (void *) the first data in the queue. * NULL if any problem. */ void* OSI_queue_get(tOSI_QUEUE_HANDLER queue); /* * Function OSI_queue_get_wait * * Description This function is called to get data from the queue. * If the queue is empty, this function is waiting for * putting data. * * Parameter que (input): queue handler. * * Return (void *) the first data in the queue. * NULL if any problem. */ void* OSI_queue_get_wait(tOSI_QUEUE_HANDLER target); /* * Function OSI_queue_free * * Description This function is called to make que free. * * Parameter que (input): queue handler. * * Return void */ void OSI_queue_free(tOSI_QUEUE_HANDLER target); /* * Function OSI_queue_get_handler * * Description This function is called to get handler by queue name. * * Parameter name(input): Target name to get handler. * * Return tOSI_QUEUE_HANDLER, on success. * NULL, on error. */ tOSI_QUEUE_HANDLER OSI_queue_get_handler(const char* name); /*************** * OSI TIMER ***************/ /* * Function OSI_timer_allocate * * Description This function is called to get a timer. * * Parameter timer_name(input): * * Return 0 if any problem * other if initialization is succeeded. */ tOSI_TIMER_HANDLER OSI_timer_allocate(const char* timer_name); /* * Function OSI_timer_start * * Description This function is called to start a timer. * * Parameter timer_handler (input) * timeout (input): time out value. it is millisecond. * callback (input): callback function. * * Return 0 if any problem * other if initialization is succeeded. * */ int OSI_timer_start(tOSI_TIMER_HANDLER timer, uint32_t timeout, tOSI_TIMER_CALLBACK callback, void* param); /* * Function OSI_timer_stop * * Description This function is called to stop a timer. * * Parameter timer_handler (input) * * Return * */ void OSI_timer_stop(tOSI_TIMER_HANDLER timer); /* * Function OSI_timer_free * * Description This function is called to free a timer. * * Parameter timer_handler (input) * * Return * */ void OSI_timer_free(tOSI_TIMER_HANDLER timer); /* * Function OSI_timer_get_handler * * Description This function is called to get timer handler by name. * * Parameter name(input): Target name to get handler. * * Return tOSI_QUEUE_HANDLER, on success. * NULL, on error. */ tOSI_TIMER_HANDLER OSI_timer_get_handler(char* name); /*************** * OSI DEBUG ***************/ #define OSI_DEBUG extern int osi_debug_level; #define OSI_set_debug_level(xx) (osi_debug_level = xx) #ifdef OSI_DEBUG #define __osi_log(type, ...) (void)ALOG(type, "SecHAL", __VA_ARGS__) #define OSI_logt(format, ...) \ do { \ if (osi_debug_level >= 2) \ __osi_log(LOG_INFO, "%s: " format, __func__, ##__VA_ARGS__); \ } while (0) #define OSI_logd(format, ...) \ do { \ if (osi_debug_level >= 1) \ __osi_log(LOG_DEBUG, "%s: " format, __func__, ##__VA_ARGS__); \ } while (0) #define OSI_loge(format, ...) \ do { \ if (osi_debug_level >= 0) \ __osi_log(LOG_ERROR, "%s: " format, __func__, ##__VA_ARGS__); \ } while (0) #else #define OSI_logt(...) #define OSI_logd(...) #define OSI_loge(...) #endif #endif /* OSI_H */