/* @file Table_modMain_Im_container.h
 * Container Interface header for Module Table_modMain_Im
 * Generated automatically from specification; do not modify here
 */

#if !defined(TABLE_MODMAIN_IM_CONTAINER_H)
#define TABLE_MODMAIN_IM_CONTAINER_H


/* Include the types from the XML types files */
#include "ECOA.h"

#include "ECOA.h"

#include "Table_modMain_Im_user_context.h"

/* Container Types */
#include "Table_modMain_Im_container_types.h"


#if defined(__cplusplus)
extern "C" {
#endif /* __cplusplus */

/* Incomplete definition of the technical (platform-dependent) part of the context
 * (it will be defined privately by the container) */
struct Table_modMain_Im__platform_hook;

/* Module Context structure declaration */
typedef struct 
{
   /*
    * Other container technical data will accessible through the pointer
    * defined here
    */
   struct Table_modMain_Im__platform_hook *platform_hook;

   /* the type Table_modMain_Im_user_context shall be defined by the user
    * in the Table_modMain_Im_user_context.h file to carry the module
    * implementation private data
    */
   Table_modMain_Im_user_context user;

} Table_modMain_Im__context;


/* Logging and fault management services API */
void Table_modMain_Im_container__log_trace
   (Table_modMain_Im__context* context, const ECOA__log log);

void Table_modMain_Im_container__log_debug
   (Table_modMain_Im__context* context, const ECOA__log log);

void Table_modMain_Im_container__log_info
   (Table_modMain_Im__context* context, const ECOA__log log);

void Table_modMain_Im_container__log_warning
   (Table_modMain_Im__context* context, const ECOA__log log);

void Table_modMain_Im_container__raise_error
   (Table_modMain_Im__context* context, const ECOA__log log);

void Table_modMain_Im_container__raise_fatal_error
   (Table_modMain_Im__context* context, const ECOA__log log);

/* Time services API */
void Table_modMain_Im_container__get_relative_local_time
   (Table_modMain_Im__context* context, ECOA__hr_time* relative_local_time);

ECOA__return_status Table_modMain_Im_container__get_UTC_time
   (Table_modMain_Im__context* context, ECOA__global_time* utc_time);

ECOA__return_status Table_modMain_Im_container__get_absolute_system_time
   (Table_modMain_Im__context* context, ECOA__global_time* absolute_system_time);

/* Time resolution services API */
void Table_modMain_Im_container__get_relative_local_time_resolution
   (Table_modMain_Im__context* context, ECOA__duration* relative_local_time_resolution);

void Table_modMain_Im_container__get_UTC_time_resolution
   (Table_modMain_Im__context* context, ECOA__duration* utc_time_resolution);

void Table_modMain_Im_container__get_absolute_system_time_resolution
   (Table_modMain_Im__context* context, ECOA__duration* absolute_system_time_resolution);

ECOA__return_status Table_modMain_Im_container__ready__get_write_access
   (Table_modMain_Im__context* context,
    Table_modMain_Im_container__ready_handle* data_handle);

ECOA__return_status Table_modMain_Im_container__ready__cancel_write_access
   (Table_modMain_Im__context* context,
    Table_modMain_Im_container__ready_handle* data_handle);

ECOA__return_status Table_modMain_Im_container__ready__publish_write_access
   (Table_modMain_Im__context* context,
    Table_modMain_Im_container__ready_handle* data_handle);

ECOA__return_status Table_modMain_Im_container__take__response_send
   (Table_modMain_Im__context* context,
    const ECOA__uint32 ID,
    const ECOA__boolean8 taken);

ECOA__return_status Table_modMain_Im_container__surrender__response_send
   (Table_modMain_Im__context* context,
    const ECOA__uint32 ID);


#if defined(__cplusplus)
}
#endif /* __cplusplus */

#endif  /* TABLE_MODMAIN_IM_CONTAINER_H */

