Exemplo n.º 1
0
void processTWIMessage()
{
  int i;
  if(g_twi_sr_recv_buffer[0] == TWIMSG_HEADER) {
    switch(g_twi_sr_recv_buffer[1]) {
      case TWIMSG_REGACCESS:
        g_current_register = g_twi_sr_recv_buffer[2];
        for(i = 3; i < g_twi_sr_recv_index; i++) {
          *g_current_register = g_twi_sr_recv_buffer[i];
          g_current_register++;
        }
        break;
      case TWIMSG_SET_PIN_MODE:
        setPinMode(g_twi_sr_recv_buffer[2], g_twi_sr_recv_buffer[3]);
        break;
      case TWIMSG_DIGITAL_WRITE_PIN:
        digitalWritePin(g_twi_sr_recv_buffer[2], g_twi_sr_recv_buffer[3]);
        break;
      case TWIMSG_DIGITAL_READ_PIN:
        digitalReadPin(g_twi_sr_recv_buffer[2]);
        break;
      case TWIMSG_ANALOG_WRITE_PIN:
        analogWritePin(g_twi_sr_recv_buffer[2], g_twi_sr_recv_buffer[3]);
        break;
      case TWIMSG_ANALOG_READ_PIN:
        analogReadPin(g_twi_sr_recv_buffer[2]);
        break;
      case TWIMSG_ANALOG_REF:
        analogSetRef(g_twi_sr_recv_buffer[2]);
        break;
    }
  } else {
    /* This message is probably a bluetooth comms message: forward it to the serial */
    /* No need to send zigbee portion of message, start at i=5 */
    if((g_mobotMode == 0) || (g_mobotMode == 1) ) {
      for(i = 5; (i-5) < g_twi_sr_recv_buffer[6] ; i++) {
        g_serialBufferOut[(g_serialBufferOutN + g_serialBufferOutIndex)%SERIAL_BUFFER_SIZE] = 
          g_twi_sr_recv_buffer[i];
        g_serialBufferOutN++;
      }
    } else {
      for(i = 0; i < g_twi_sr_recv_buffer[1] ; i++) {
        g_serialBufferOut[(g_serialBufferOutN + g_serialBufferOutIndex)%SERIAL_BUFFER_SIZE] = 
          g_twi_sr_recv_buffer[i];
        g_serialBufferOutN++;
      }
    }
  }
}
void ParkingShield::setLed(led_t led, bool enable)
{
    if (isLedValid(led))
        digitalWritePin(static_cast<output_t>(led), enable ? Device::SIGNAL_LOW : Device::SIGNAL_HIGH);
}
void ParkingShield::setBuzzer(bool enable) const
{
    digitalWritePin(BUZZER, enable ? Device::SIGNAL_HIGH : Device::SIGNAL_LOW);
}