blob: ac29c5442c40b8f88e9c8c957769f5caeec8ef5c [file] [log] [blame]
/*
* 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 */