Example #1
0
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);
            }
        }
    }
}
Example #2
0
/*******************************************************************************
* 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;
            }
        }
    }
}