#ifndef _TerrainAidMessage_H
#define _TerrainAidMessage_H

#include "MessageQueue.h"
#define TerrainAidQueueName "TerrainAidMsgs"


class TerrainAidMsg : public MessageQueue {
  public:
    enum TerrainAidMsgs {
      None = 0,
      ReinitFilter             // Reinit the TRN filter
    };

    struct Message {
      TerrainAidMsgs _msg;
      int   _int;
      float _float;
      char  _str[120];

      Message() {
        _msg = None;
        _int = 0; _float = 0.;
      };

      Message(TerrainAidMsgs msg) {
         Message();
        _msg = msg;
      };
      Message(TerrainAidMsgs msg, int attr) {
         _msg = msg;
        _int = attr;
      };

      Message(TerrainAidMsgs msg, float attr) {
         _msg = msg;
        _float = attr;
      };

      Message(TerrainAidMsgs msg, char *attr) {
         _msg = msg;
        strncpy(_str, attr, sizeof(_str) - 1);
        _str[sizeof(_str)] = '\0';
      };
    };

  TerrainAidMsg( MessageQueue::Access access = ReadWrite)
    : MessageQueue( TerrainAidQueueName, sizeof( Message ), 20, access, False ) {}

  ~TerrainAidMsg() {}


  int read( Message *msg ) {return MessageQueue::read((void *)msg);}
  int write( Message *msg ) {return MessageQueue::write((void *)msg);}
};
#endif
