145 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/****************************************************************************
 | 
						|
 | 
						|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
 | 
						|
 | 
						|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
 | 
						|
be copied by any method or incorporated into another program without
 | 
						|
the express written consent of Aerospace C.Power. This Information or any portion
 | 
						|
thereof remains the property of Aerospace C.Power. The Information contained herein
 | 
						|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
 | 
						|
liability for its use in any way and conveys no license or title under
 | 
						|
any patent or copyright and makes no representation or warranty that this
 | 
						|
Information is free from patent or copyright infringement.
 | 
						|
 | 
						|
****************************************************************************/
 | 
						|
 | 
						|
#ifndef OS_SHIM_LOCK_API_H
 | 
						|
#define OS_SHIM_LOCK_API_H
 | 
						|
 | 
						|
/* os shim includes */
 | 
						|
#include "os_types_api.h"
 | 
						|
 | 
						|
/* common includes */
 | 
						|
#include "iot_module_api.h"
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
/** \defgroup OS_APIs PLC OS APIs
 | 
						|
  * @brief WQ30x1 PLC OS APIs
 | 
						|
  */
 | 
						|
 | 
						|
 | 
						|
/** @addtogroup OS_APIs
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
 | 
						|
/** \defgroup OS_MUTEX_APIs PLC OS LOCK APIs
 | 
						|
  * @brief PLC OS MUTEX
 | 
						|
  *
 | 
						|
  * OS MUTEX API for customer application.
 | 
						|
  */
 | 
						|
 | 
						|
/** @addtogroup OS_MUTEX_APIs
 | 
						|
  * @{
 | 
						|
  */
 | 
						|
 | 
						|
 | 
						|
/* mutex handle definition */
 | 
						|
typedef void *os_mutex_h;
 | 
						|
 | 
						|
/* sempahore handle definition */
 | 
						|
typedef void *os_sem_h;
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief os_create_mutex() - create a mutex.
 | 
						|
 * @param module_id:      the module that creates the event.
 | 
						|
 *
 | 
						|
 * @return                NULL -- for failure case
 | 
						|
 * @return                otherwise -- mutex handle
 | 
						|
 */
 | 
						|
os_mutex_h os_create_mutex(module_id_t module_id);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief os_acquire_mutex() - acquire a mutex. This function can be called
 | 
						|
 * recursively from one task. For each call, a corresponding release call is
 | 
						|
 * required to release the mutex. This function can NOT be called in ISR context.
 | 
						|
 * @param mutex:          mutex to be acquired
 | 
						|
 */
 | 
						|
void os_acquire_mutex(os_mutex_h mutex);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief os_try_acquire_mutex() - try to acquire a mutex. This function is
 | 
						|
 * not blocking when called. This function can NOT be called in ISR context.
 | 
						|
 * @param mutex:          mutex to be acquired
 | 
						|
 * @return                true --  acquire mutex successfully.
 | 
						|
 *                        false -- failed.
 | 
						|
 */
 | 
						|
bool_t os_try_acquire_mutex(os_mutex_h mutex);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief os_release_mutex() - release a mutex This function can NOT be called
 | 
						|
 * in ISR context.
 | 
						|
 * @param mutex:          mutex to be released
 | 
						|
 */
 | 
						|
void os_release_mutex(os_mutex_h mutex);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief os_delete_mutex() - delete a mutex
 | 
						|
 * @param mutex:          mutex to be deleted
 | 
						|
 */
 | 
						|
void os_delete_mutex(os_mutex_h mutex);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief os_create_sem() - create a count semaphore.
 | 
						|
 * @param module_id:      the module that creates the semaphore.
 | 
						|
 * @param max_count:      max count for this semaphore.
 | 
						|
 * @param init_count:     init count for this semaphore.
 | 
						|
 *
 | 
						|
 * @return                NULL -- for failure case
 | 
						|
 * @return                otherwise -- semaphore handle
 | 
						|
 */
 | 
						|
os_sem_h os_create_sem(module_id_t module_id, uint32_t max_count,
 | 
						|
    uint32_t init_count);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief os_pend_sem() - pend to take a semaphore.
 | 
						|
 * This function can NOT be called in ISR context.
 | 
						|
 * @param semaphore:          semaphore to be take.
 | 
						|
 * @param timeout:        timeout time(ms).
 | 
						|
 * @return                true -- take semaphore successfully.
 | 
						|
 *                        false -- timeout.
 | 
						|
 */
 | 
						|
bool_t os_pend_sem(os_sem_h semaphore, uint32_t timeout);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief os_post_sem() - post a semaphore.
 | 
						|
 * This function can NOT be called in ISR context.
 | 
						|
 * @param semaphore:          semaphore to be posted.
 | 
						|
 * @return                true -- post semaphore successfully.
 | 
						|
 *                        false -- failed.
 | 
						|
 */
 | 
						|
bool_t os_post_sem(os_sem_h semaphore);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief os_delete_sem() - delete a semaphore.
 | 
						|
 * @param semaphore:      semaphore to be deleted
 | 
						|
 */
 | 
						|
void os_delete_sem(os_sem_h semaphore);
 | 
						|
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* OS_SHIM_LOCK_API_H */
 |