summaryrefslogtreecommitdiff
path: root/halimpl/osi/osi.h
diff options
context:
space:
mode:
Diffstat (limited to 'halimpl/osi/osi.h')
-rw-r--r--halimpl/osi/osi.h348
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 */