You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
349 lines
8.9 KiB
349 lines
8.9 KiB
/*
|
|
* 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 */
|