int main(void) { uint8 x = 1; uint8 i; CR1_Write(0); LCD_Start(); show(); for(;;) { if (!SW2_Read()) { // PUSH button CY_SET_REG8(Fifo_dp_u0__F0_REG, x++); show(); while (!SW2_Read()) { CyDelay(10); } } if (!SW3_Read()) { // PULL button for (i = 0; i < 7; i++) { v[i] = v[i+1]; } v[7] = CY_GET_REG8(Fifo_dp_u0__F0_REG); show(); while (!SW3_Read()) { CyDelay(10); } } } }
/******************************************************************************* * Function Name: SimulateKeyboard() ******************************************************************************** * * Summary: * The custom function to simulate CapsLock key pressing * *******************************************************************************/ void SimulateKeyboard(void) { static uint8 keyboard_data[KEYBOARD_DATA_SIZE]={0,0,0,0,0,0,0,0}; CYBLE_API_RESULT_T apiResult; static uint32 keyboardTimer = KEYBOARD_TIMEOUT; static uint8 simKey; static uint8 capsLockPress = 0u; uint8 i; /* Scan SW2 key each connection interval */ if(0u == SW2_Read()) { if(capsLockPress < KEYBOARD_JITTER_SIZE) { capsLockPress++; } else if(capsLockPress == KEYBOARD_JITTER_SIZE) { keyboard_data[2u] = CAPS_LOCK; /* Set up keyboard data */ keyboardTimer = 1u; /* Clear Simulation timer to send data */ capsLockPress++; } else /* Ignore long key pressing */ { } } else { capsLockPress = 0u; } if((CyBle_GattGetBusyStatus() == CYBLE_STACK_STATE_FREE) && (--keyboardTimer == 0u)) { keyboardTimer = KEYBOARD_TIMEOUT; simKey++; if(simKey > SIM_KEY_MAX) { simKey = SIM_KEY_MIN; } keyboard_data[3u] = simKey; apiResult = CyBle_HidssGetCharacteristicValue(CYBLE_HUMAN_INTERFACE_DEVICE_SERVICE_INDEX, CYBLE_HIDS_PROTOCOL_MODE, sizeof(protocol), &protocol); if(apiResult == CYBLE_ERROR_OK) { DBG_PRINTF("HID notification: "); for(i = 0; i < KEYBOARD_DATA_SIZE; i++) { DBG_PRINTF("%2.2x,", keyboard_data[i]); } DBG_PRINTF("\r\n"); if(protocol == CYBLE_HIDS_PROTOCOL_MODE_BOOT) { apiResult = CyBle_HidssSendNotification(cyBle_connHandle, CYBLE_HUMAN_INTERFACE_DEVICE_SERVICE_INDEX, CYBLE_HIDS_BOOT_KYBRD_IN_REP, KEYBOARD_DATA_SIZE, keyboard_data); } else { apiResult = CyBle_HidssSendNotification(cyBle_connHandle, CYBLE_HUMAN_INTERFACE_DEVICE_SERVICE_INDEX, CYBLE_HUMAN_INTERFACE_DEVICE_REPORT_IN, KEYBOARD_DATA_SIZE, keyboard_data); } if(apiResult == CYBLE_ERROR_OK) { keyboard_data[2u] = 0u; /* Set up keyboard data*/ keyboard_data[3u] = 0u; /* Set up keyboard data*/ if(protocol == CYBLE_HIDS_PROTOCOL_MODE_BOOT) { apiResult = CyBle_HidssSendNotification(cyBle_connHandle, CYBLE_HUMAN_INTERFACE_DEVICE_SERVICE_INDEX, CYBLE_HIDS_BOOT_KYBRD_IN_REP, KEYBOARD_DATA_SIZE, keyboard_data); } else { apiResult = CyBle_HidssSendNotification(cyBle_connHandle, CYBLE_HUMAN_INTERFACE_DEVICE_SERVICE_INDEX, CYBLE_HUMAN_INTERFACE_DEVICE_REPORT_IN, KEYBOARD_DATA_SIZE, keyboard_data); } } if(apiResult != CYBLE_ERROR_OK) { DBG_PRINTF("HID notification API Error: %x \r\n", apiResult); keyboardSimulation = DISABLED; } } } }