/********************************************************************* * @fn HidEmuKbd_reportCB * * @brief HID Dev report callback. * * @param id - HID report ID. * @param type - HID report type. * @param uuid - attribute uuid. * @param oper - operation: read, write, etc. * @param len - Length of report. * @param pData - Report data. * * @return GATT status code. */ static uint8_t HidEmuKbd_reportCB(uint8_t id, uint8_t type, uint16_t uuid, uint8_t oper, uint16_t *pLen, uint8_t *pData) { uint8_t status = SUCCESS; // Write if (oper == HID_DEV_OPER_WRITE) { if (uuid == REPORT_UUID) { // Process write to LED output report; ignore others if (type == HID_REPORT_TYPE_OUTPUT) { status = HidEmuKbd_receiveReport(*pLen, pData); } } if (status == SUCCESS) { status = HidKbd_SetParameter(id, type, uuid, *pLen, pData); } } // Read else if (oper == HID_DEV_OPER_READ) { uint8_t len; status = HidKbd_GetParameter(id, type, uuid, &len, pData); if (status == SUCCESS) { *pLen = len; } } // Notifications enabled else if (oper == HID_DEV_OPER_ENABLE) { if (id == HID_RPT_ID_MOUSE_IN && type == HID_REPORT_TYPE_INPUT) { hidBootMouseEnabled = TRUE; } } // Notifications disabled else if (oper == HID_DEV_OPER_DISABLE) { if (id == HID_RPT_ID_MOUSE_IN && type == HID_REPORT_TYPE_INPUT) { hidBootMouseEnabled = FALSE; } } return status; }
/********************************************************************* * @fn hidEmuKbdRptCB * * @brief HID Dev report callback. * * @param id - HID report ID. * @param type - HID report type. * @param uuid - attribute uuid. * @param oper - operation: read, write, etc. * @param len - Length of report. * @param pData - Report data. * * @return GATT status code. */ static uint8 hidEmuKbdRptCB( uint8 id, uint8 type, uint16 uuid, uint8 oper, uint8 *pLen, uint8 *pData ) { uint8 status = SUCCESS; // write if ( oper == HID_DEV_OPER_WRITE ) { if ( uuid == HID_REPORT_UUID ) { // process write to LED output report; ignore others if ( type == HID_REPORT_TYPE_OUTPUT ) { status = hidEmuKbdRcvReport( *pLen, pData ); } } if ( status == SUCCESS ) { status = HidKbd_SetParameter( id, type, uuid, *pLen, pData ); } } // read else if ( oper == HID_DEV_OPER_READ ) { status = HidKbd_GetParameter( id, type, uuid, pLen, pData ); } // notifications enabled else if ( oper == HID_DEV_OPER_ENABLE ) { if ( id == HID_RPT_ID_MOUSE_IN && type == HID_REPORT_TYPE_INPUT ) { hidBootMouseEnabled = TRUE; } } // notifications disabled else if ( oper == HID_DEV_OPER_DISABLE ) { if ( id == HID_RPT_ID_MOUSE_IN && type == HID_REPORT_TYPE_INPUT ) { hidBootMouseEnabled = FALSE; } } return status; }