summaryrefslogblamecommitdiffstats
blob: cda0bb5f9bc952148fb2207798618247b4a7fbdc (plain) (tree)














































































































































































                                                                                                    
                                                              




























                                                                            
/*
 * Copyright (c) 2018, Texas Instruments Incorporated
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * *  Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * *  Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * *  Neither the name of Texas Instruments Incorporated nor the names of
 *    its contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/** ============================================================================
 *  @file       EventP.h
 *
 *  @brief      Event module for the RTOS Porting Interface
 *
 *
 *  ============================================================================
 */

#ifndef ti_osal_EventP__include
#define ti_osal_EventP__include

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
#include <ti/sysbios/knl/Event.h>

/*
 * Pre-defined Event Ids. Event_Ids are provided to simplify the specification
 * of andMasks and orMasks arguments to Event_pend().
 * Since each Event_Id is a bitmask composed of only a single bit,
 * a group of Event_Ids within an andMask or orMask can be indicated by simply adding them together.
 */

/*!
*  @brief    Event ID 0
*/
#define EventP_ID_NONE     Event_Id_NONE
/*!
 *  @brief    Event ID 0
 */
#define EventP_ID_00        Event_Id_00
/*!
 *  @brief    Event ID 1
 */
#define EventP_ID_01        Event_Id_01
/*!
 *  @brief    Event ID 2
 */
#define EventP_ID_02        Event_Id_02
/*!
 *  @brief    Event ID 3
 */
#define EventP_ID_03        Event_Id_03
/*!
 *  @brief    Event ID 4
 */
#define EventP_ID_04        Event_Id_04
/*!
 *  @brief    Event ID 5
 */
#define EventP_ID_05        Event_Id_05
/*!
 *  @brief    Event ID 6
 */
#define EventP_ID_06        Event_Id_06
/*!
 *  @brief    Event ID 7
 */
#define EventP_ID_07        Event_Id_07
/*!
 *  @brief    Event ID 8
 */
#define EventP_ID_08        Event_Id_08
/*!
 *  @brief    Event ID 9
 */
#define EventP_ID_09        Event_Id_09
/*!
 *  @brief    Event ID 10
 */
#define EventP_ID_10        Event_Id_10

/*!
 *  @brief    Status codes for EventP APIs
 */
typedef enum EventP_Status_e
{
    /*! API completed successfully */
    EventP_OK         = 0,
    /*! API failed */
    EventP_FAILURE    = (-(int32_t)1)
} EventP_Status;

/*!
 *  @brief    Wait forever define
 */
#define EventP_WAIT_FOREVER (~((uint32_t)0U))

/*!
 *  @brief    No wait define
 */
#define EventP_NO_WAIT       ((uint32_t)0U)


/*!
 *  @brief    Opaque client reference to an instance of a EventP
 *
 *  A EventP_Handle returned from the ::EventP_create represents that
 *  instance and  is used in the other instance based functions
 */
typedef  void *EventP_Handle;

/*!
 *  @brief    Basic EventP Parameters
 *
 *  Structure that contains the parameters are passed into ::EventP_create
 *  when creating a EventP instance.
 */
typedef struct EventP_Params_s
{
    void *instance;          /*!< Name of the task instance.                  */
} EventP_Params;

/*!
 *  @brief  Function to create an event.
 *
 *  @param  params  Pointer to the instance configuration parameters.
 *
 *  @return A EventP_Handle on success or a NULL on an error
 */
extern EventP_Handle EventP_create(EventP_Params *params);

/*!
 *  @brief  Function to delete an event.
 *
 *  @param  handle  A EventP_Handle returned from EventP_create
 */
extern void EventP_delete(EventP_Handle *handle);

/*!
 *  @brief  Initialize params structure to default values.
 *
 *  @param params  Pointer to the instance configuration parameters.
 */
extern void EventP_Params_init(EventP_Params *params);

/*!
 *  @brief  Function for Event Pend
 *
 *  @param handle  EventP handle.created via EventP_create API
 *  @param andMask return from pend() when ALL of these events have occurred
 *  @param orMask  return from pend() when ANY of these events have occurred
 *  @param timeout return from pend() after this many system time units
 *  @return All consumed events or zero if timeout
 */
extern uint32_t EventP_pend(EventP_Handle handle, uint32_t andMask,
                            uint32_t orMask, uint32_t timeout);

/*!
 *  @brief  Function for Event Post.
 *
 *  @param handle  A EventP_Handle returned from EventP_create.
 *  @param eventMask  mask of eventIds to post (must be non-zero)
 */
extern void EventP_post(EventP_Handle handle, uint32_t eventMask);

/*!
 *  @brief  Function for Event Post.
 *
 *  @param handle  A EventP_Handle returned from EventP_create.
 *  @return All un-consumed events posted to the event
 */
extern uint32_t EventP_getPostedEvents(EventP_Handle handle);

#ifdef __cplusplus
}
#endif

#endif /* ti_osal_EventP__include */