Public Types | Public Member Functions
ErrorPayload Class Reference

#include <CubeMessages.h>

List of all members.

Public Types

enum  MessageId { MessageId = 0x02 }

Public Member Functions

void bigEndianValues ()
void get (CubeTcpServer *tcpServer, CubeBuffer *buffer)

Member Enumeration Documentation

Enumerator:
MessageId 
{MessageId=0x02};

Member Function Documentation

void ErrorPayload::bigEndianValues ( ) [inline]
{
#if BYTE_ORDER==LITTLE_ENDIAN
  ByteOrder::swap(_errorData.bytes);
#endif
}
void ErrorPayload::get ( CubeTcpServer tcpServer,
CubeBuffer buffer 
)

References ControlMessageClass, DataMessageClass, ParameterMessageClass, GpCoreTools::TcpServerStream::send(), CubeBuffer::sequenceNotAvailable(), and StatusMessageClass.

{
  char buf[256];
  // General error messages
  switch(_messageClass) {
  case ControlMessageClass:
    switch(_messageId) {
    case StartPayload::MessageId: {
        const char * title="start request";
        switch(_errorClass) {
        case 0x00:
          switch(_errorId) {
          case 0x01:
            snprintf(buf, 256, "[ERROR] %s, acquisition is already running\n", title);
            tcpServer->send(buf, strlen(buf));
            return;
          default:
            break;
          }
          break;
        default:
          break;
        }
      }
      break;
    case StopPayload::MessageId: {
        const char * title="stop request";
        switch(_errorClass) {
        case 0x00:
          switch(_errorId) {
          case 0x01:
            snprintf(buf, 256, "[ERROR] %s, acquisition is not running\n", title);
            tcpServer->send(buf, strlen(buf));
            return;
          default:
            break;
          }
          break;
        default:
          break;
        }
      }
      break;
    case ResetPayload::MessageId:
      break;
    default:
      break;
    }
    break;
  case ParameterMessageClass: {
      const char * title;
      switch(_messageId) {
      default:
        title="frequency";
        break;
      case GainsPayload::MessageId:
        title="gains";
        break;
      case TimeModePayload::MessageId:
        title="time mode";
        break;
      }
      switch(_errorClass) {
      case 0x00:
        switch(_errorId) {
        case 0x01:
          snprintf(buf, 256, "[ERROR] %s, value out of admissible range\n", title);
          tcpServer->send(buf, strlen(buf));
          return;
        case 0x02:
          snprintf(buf, 256, "[ERROR] %s, acquisition is started\n", title);
          tcpServer->send(buf, strlen(buf));
          return;
        default:
          break;
        }
        break;
      default:
        break;
      }
    }
    break;
  case StatusMessageClass:
    break;
  case DataMessageClass:
    switch(_errorClass) {
    case 0x00:
      switch(_errorId) {
      case 0x01:
        snprintf(buf, 256, "[ERROR] sequence %i no longer available\n", _errorData.value);
        tcpServer->send(buf, strlen(buf));
        buffer->sequenceNotAvailable(_errorData.value);
        return;
      default:
        break;
      }
      break;
    default:
      break;
    }
    break;
  default:
    break;
  }
  switch(_errorClass) {
  case 0x80:
    switch(_errorId) {
    case 0x01:
      snprintf(buf, 256, "bad checksum for set/request message %02hhX %02hhX\n", _messageClass, _messageId);
      tcpServer->send(buf, strlen(buf));
      return;
    case 0x02:
      snprintf(buf, 256, "bad length for request message %02hhX %02hhX\n", _messageClass, _messageId);
      tcpServer->send(buf, strlen(buf));
      return;
    default:
      break;
    }
    break;
  case 0x90:
    snprintf(buf, 256, "spontaneous error %02hhX %02hhX\n", _errorClass, _errorId);
    tcpServer->send(buf, strlen(buf));
    Log::write(0, buf);
    return;
  default:
    break;
  }
  Log::write(0, "[ERROR] unknow error %02hhX %02hhX for message %02hhX %02hhX\n", _errorClass, _errorId, _messageClass, _messageId);
}

Member Data Documentation

unsigned char ErrorPayload::bytes[4]
unsigned int ErrorPayload::value

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines