#define MAX_COMMAND_DATA_BYTES 4
#define MAX_NUMBER_OF_COMMANDS 8

#define ANALOG_READ 0
#define ANALOG_WRITE 1
#define DIGITAL_READ 2
#define DIGITAL_WRITE 3
#define PIN_MODE 4
#define TONE 5
#define NO_TONE 6
 
typedef struct {
  byte opcode;
  byte number_of_data_bytes;
  byte pin;
  byte value;
  byte opcode_byte;
  byte data_bytes[MAX_COMMAND_DATA_BYTES];
} Command;