diff options
Diffstat (limited to 'halimpl/osi/osi.h')
-rw-r--r-- | halimpl/osi/osi.h | 348 |
1 files changed, 348 insertions, 0 deletions
diff --git a/halimpl/osi/osi.h b/halimpl/osi/osi.h new file mode 100644 index 0000000..ac29c54 --- /dev/null +++ b/halimpl/osi/osi.h @@ -0,0 +1,348 @@ +/* + * 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 <osi_common.h> + +#include <log/log.h> + +/************************************************************************ +** 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 */ |