Esempio n. 1
0
void AppProtocolTasks(CHANNEL_HANDLE h) {
    if (state == STATE_CLOSED) return;
    if (state == STATE_CLOSING && ByteQueueSize(&tx_queue) == 0) {
        log_printf("Finished flushing, closing the channel.");
        ConnectionCloseChannel(h);
        state = STATE_CLOSED;
        return;
    }
    UARTTasks();
    SPITasks();
    I2CTasks();
    ICSPTasks();
    if (ConnectionCanSend(h)) {
        BYTE prev = SyncInterruptLevel(1);
        const BYTE* data;
        if (bytes_out) {
            ByteQueuePull(&tx_queue, bytes_out);
            bytes_out = 0;
        }
        ByteQueuePeek(&tx_queue, &data, &bytes_out);
        if (bytes_out > 0) {
            if (bytes_out > max_packet) bytes_out = max_packet;
            ConnectionSend(h, data, bytes_out);
        }
        SyncInterruptLevel(prev);
    }
}
Esempio n. 2
0
File: digital.c Progetto: 21rcc/ioio
void SetDigitalOutLevel(int pin, int value) {
  log_printf("SetDigitalOutLevel(%d, %d)", pin, value);
  SAVE_PIN_FOR_LOG(pin);
  BYTE prev = SyncInterruptLevel(4);
  PinSetLat(pin, value);
  SyncInterruptLevel(prev);
}
Esempio n. 3
0
void AppProtocolSendMessageWithVarArg(const OUTGOING_MESSAGE* msg, const void* data, int size) {
    if (state != STATE_OPEN) return;
    BYTE prev = SyncInterruptLevel(1);
    ByteQueuePushBuffer(&tx_queue, (const BYTE*) msg, OutgoingMessageLength(msg));
    ByteQueuePushBuffer(&tx_queue, data, size);
    SyncInterruptLevel(prev);
}
Esempio n. 4
0
void SetDigitalOutLevel(int pin, int value) {
  heartbeat(); //ANDROID THERMOSTAT MOD
  log_printf("SetDigitalOutLevel(%d, %d)", pin, value);
  SAVE_PIN_FOR_LOG(pin);
  BYTE prev = SyncInterruptLevel(4);
  PinSetLat(pin, value);
  SyncInterruptLevel(prev);
}
Esempio n. 5
0
void AppProtocolSendMessageWithVarArgSplit(const OUTGOING_MESSAGE* msg,
                                           const void* data1, int size1,
                                           const void* data2, int size2) {
  BYTE prev = SyncInterruptLevel(1);
  ByteQueuePushBuffer(&tx_queue, (const BYTE*) msg, OutgoingMessageLength(msg));
  ByteQueuePushBuffer(&tx_queue, data1, size1);
  ByteQueuePushBuffer(&tx_queue, data2, size2);
  SyncInterruptLevel(prev);
}
Esempio n. 6
0
void AppProtocolTasks(ADB_CHANNEL_HANDLE h) {
  UARTTasks();
  SPITasks();
  I2CTasks();
  ICSPTasks();
  if (ADBChannelReady(h)) {
    BYTE prev = SyncInterruptLevel(1);
    const BYTE* data;
    int size;
    if (bytes_transmitted) {
      ByteQueuePull(&tx_queue, bytes_transmitted);
      bytes_transmitted = 0;
    }
    ByteQueuePeek(&tx_queue, &data, &size);
    if (size > 0) {
      ADBWrite(h, data, size);
      bytes_transmitted = size;
    }
    SyncInterruptLevel(prev);
  }
}
Esempio n. 7
0
File: protocol.c Progetto: brNX/ioio
void AppProtocolTasks(CHANNEL_HANDLE h) {
  UARTTasks();
  SPITasks();
  I2CTasks();
  ICSPTasks();
  /***********************SNES/NES****************************/
  SNESTasks();
  /***********************************************************/
  if (ConnectionCanSend(h)) {
    BYTE prev = SyncInterruptLevel(1);
    const BYTE* data;
    if (bytes_out) {
      ByteQueuePull(&tx_queue, bytes_out);
      bytes_out = 0;
    }
    ByteQueuePeek(&tx_queue, &data, &bytes_out);
    if (bytes_out > 0) {
      if (bytes_out > max_packet) bytes_out = max_packet;
      ConnectionSend(h, data, bytes_out);
    }
    SyncInterruptLevel(prev);
  }
}
Esempio n. 8
0
void AppProtocolSendMessage(const OUTGOING_MESSAGE* msg) {
  BYTE prev = SyncInterruptLevel(1);
  ByteQueuePushBuffer(&tx_queue, (const BYTE*) msg, OutgoingMessageLength(msg));
  SyncInterruptLevel(prev);
}