Здравствуйте!
Делаю пример из Microchip App Library, Device - HID - Custom Demos
Как я правильно понял, создается на стороне РС и устройства некий pipe, через который происходит обмен по 64 байта в одном пакете.
Разбор пакетов происходит по первому байту.
switch (ReceivedDataBuffer[0]) //Look at the data the host sent, to see what kind of application specific command it sent.
{case 0x80: //Toggle LEDs command
mLED_5_Toggle();
break;
case 0x81: //Get push button state
ToSendDataBuffer[0] = 0x81; //Echo back to the host PC the command we are fulfilling in the first byte. In this case, the Get Pushbutton State command.
if(sw3 == 1) //pushbutton not pressed, pull up resistor on circuit board is pulling the PORT pin high
{ToSendDataBuffer[1] = 0x01;}
else{ToSendDataBuffer[1] = 0x00;}
if(!HIDTxHandleBusy(USBInHandle)){
USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64); }
break;
case 0x37: {
WORD_VAL w;
if(!HIDTxHandleBusy(USBInHandle)) {
ToSendDataBuffer[0] = 0x37;
ToSendDataBuffer[1] = 55;
ToSendDataBuffer[2] = 12;
USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64);
} //if
}
break;
default:
break;
}// switch(ReceivedDataBuffer[0])
Мне собственно это и нужно. Устройство должно читать кнопки, моргать светодиодами, читать АЦП и тд.
Вопрос, нужно ли для каждой функции создавать endpoint, или определить для себя 255 (или более) типов пакетов и обмениваться данными через готовый endpoint?