123

Dependencies:   mbed

Fork of LG by igor Apu

DeviceUserResponse.h

Committer:
Diletant
Date:
2016-07-10
Revision:
182:2bd8ec44998f
Parent:
DeviceUserProtocolResponse.h@ 167:bedc0a9d559a

File content as of revision 182:2bd8ec44998f:

#ifndef __DEVICE_USER_RESPONSE_H__
#define __DEVICE_USER_RESPONSE_H__

typedef enum _ResponseType {
    RESPONSE_NONE,      //no sheduled response
    RESPONSE_IMMEDIATE, //immediate response for most of requests
    RESPONSE_DELAYED,   //delayed response for broadcast requests
    RESPONSE_PERIODIC   //periodic response for some of requests
} ResponseType;

typedef enum _ResponseData {
    RESPONSE_BUFFER,     //response buffer content as is if not empty
    RESPONSE_DELTA_BINS, //fill buffer with Delta_BINS data set
    RESPONSE_DELTA_PS,   //fill buffer with Delta_PS data set
    RESPONSE_DELTA_SF,   //fill buffer with Delta_SF data set
    RESPONSE_RATE        //fill buffer with M_Rate data set
} ResponseData;

#define OutputBufferSize 64
typedef struct _DeviceOutputBuffer {
  uint8_t data[OutputBufferSize]; //Buffer
  uint8_t count;                  //Buffer byte count
  uint8_t position;               //Transmission position
} DeviceOutputBuffer;

typedef struct _DeviceResponseParameter {
    void * ref;    //parameter address
    uint16_t size; //parameter byte size
} DeviceResponseParameter;

//Response state
typedef struct _DeviceUserResponse {
  uint16_t code;     //request code
  ResponseType type; //how send: immediately/delayed/periodic
  uint8_t enabled;   //Enabled to fill response data
  uint8_t ready;     //Ready to transmit
  uint32_t counter;  //time from: broadcast line request/broadcast pin request/latest periodic response; values in mks; access this only from timer interrupt
  uint32_t trigger;  //counter trigger value to response; values in mks;
  uint8_t  triggered;//set this only from timer interrupt, clear from main loop
  DeviceOutputBuffer buffer;
  uint16_t message;  //message: ok, error, ...
  uint8_t parametersCount;
  DeviceResponseParameter parameters[4]; //Response parameters list
  uint16_t packet;   //packet to send (for periodic answers)
} DeviceUserResponse;

void InitUserResponseDefaultSettings(void);
void InitUserResponseState(void);
void DeviceStartUserResponse(void);

#endif  /* __DEVICE_USER_RESPONSE_H__ */