hsmCommunicator_priv.hΒΆ

/**
        hsmCommunicator_priv.h

        This file automatically generated by FSMLang
*/

#ifndef _HSMCOMMUNICATOR_PRIV_H_
#define _HSMCOMMUNICATOR_PRIV_H_

#include "hsmCommunicator.h"
#ifndef HSM_COMMUNICATOR_NATIVE_PROLOG
#define HSM_COMMUNICATOR_NATIVE_PROLOG

#ifndef DBG_PRINTF
#include <stdio.h>
#define DBG_PRINTF(...) printf(__VA_ARGS__); printf("\n");
#endif

typedef enum
{
        msg_none
        , msg_step0_response
        , msg_step1_response
        , msg_ack
} msg_e_t;

typedef struct _queue_str_
{
        unsigned queue_count;
} queue_str_t;


#endif

#ifdef HSM_COMMUNICATOR_DEBUG
#include <stdio.h>
#include <stdlib.h>
#endif


#ifdef HSM_COMMUNICATOR_DEBUG
extern char *HSM_COMMUNICATOR_EVENT_NAMES[];
extern char *HSM_COMMUNICATOR_STATE_NAMES[];
#endif

typedef enum {
        hsmCommunicator_UNINITIALIZED
        , hsmCommunicator_IDLE
        , hsmCommunicator_ESTABLISHING_SESSION
        , hsmCommunicator_IN_SESSION
        , hsmCommunicator_numStates
}  HSM_COMMUNICATOR_STATE;

typedef struct _hsmCommunicator_struct_ HSM_COMMUNICATOR;
#undef FSM_TYPE_PTR
#define FSM_TYPE_PTR pHSM_COMMUNICATOR
extern HSM_COMMUNICATOR hsmCommunicator;

typedef HSM_COMMUNICATOR_EVENT_ENUM (*HSM_COMMUNICATOR_ACTION_FN)(FSM_TYPE_PTR);

typedef void (*HSM_COMMUNICATOR_FSM)(FSM_TYPE_PTR,pHSM_COMMUNICATOR_EVENT);

void hsmCommunicatorFSM(FSM_TYPE_PTR,pHSM_COMMUNICATOR_EVENT);

#include "hsmCommunicator_submach.h"
typedef ACTION_RETURN_TYPE (*HSM_COMMUNICATOR_STATE_FN)(pHSM_COMMUNICATOR,HSM_COMMUNICATOR_EVENT_ENUM);

static const HSM_COMMUNICATOR_STATE_FN hsmCommunicator_state_fn_array[hsmCommunicator_numStates];

struct _hsmCommunicator_struct_ {
        HSM_COMMUNICATOR_DATA               data;
        HSM_COMMUNICATOR_STATE              state;
        HSM_COMMUNICATOR_EVENT_ENUM         event;
        HSM_COMMUNICATOR_STATE_FN     const (*statesArray)[hsmCommunicator_numStates];
        pHSM_COMMUNICATOR_SUB_FSM_IF   const (*subMachineArray)[hsmCommunicator_numSubMachines];
        HSM_COMMUNICATOR_FSM                fsm;
};


ACTION_RETURN_TYPE hsmCommunicator_initialize(FSM_TYPE_PTR);
ACTION_RETURN_TYPE hsmCommunicator_startSessionEstablishment(FSM_TYPE_PTR);
ACTION_RETURN_TYPE hsmCommunicator_completeSessionStart(FSM_TYPE_PTR);
ACTION_RETURN_TYPE hsmCommunicator_passMessageReceived(FSM_TYPE_PTR);
ACTION_RETURN_TYPE hsmCommunicator_queueMessage(FSM_TYPE_PTR);
ACTION_RETURN_TYPE hsmCommunicator_requestMessageTransmission(FSM_TYPE_PTR);


void hsmCommunicator_store_message(pHSM_COMMUNICATOR_DATA,pHSM_COMMUNICATOR_MESSAGE_RECEIVED_DATA);


#endif