nRF51 SDK - S110 SoftDevice
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Cherry 8x16 keyboard matrix driver

Cherry 8x16 keyboard matrix driver. More...

Macros

#define CHERRY8x16_MAX_NUM_OF_PRESSED_KEYS   6
 Maximum number of pressed keys kept in buffers.
 
#define CHERRY8x16_DEFAULT_KEY_LOOKUP_MATRIX   (const uint8_t*)0
 If passed to cherry8x16_init, default lookup matrix will be used.
 
#define KEY_PACKET_MODIFIER_KEY_INDEX   (0)
 Index in the key packet where modifier keys such as ALT and Control are stored.
 
#define KEY_PACKET_RESERVED_INDEX   (1)
 Index in the key packet where OEMs can store information.
 
#define KEY_PACKET_KEY_INDEX   (2)
 Start index in the key packet where pressed keys are stored.
 
#define KEY_PACKET_MAX_KEYS   (6)
 Maximum number of keys that can be stored into the key packet.
 
#define KEY_PACKET_SIZE   (KEY_PACKET_KEY_INDEX+KEY_PACKET_MAX_KEYS)
 Total size of the key packet in bytes.
 
#define KEY_PACKET_NO_KEY   (0)
 Value to be stored to key index to indicate no key is pressed.
 

Enumerations

enum  cherry8x16_status_t {
  CHERRY8x16_OK,
  CHERRY8x16_NOT_DETECTED,
  CHERRY8x16_INVALID_PARAMETER
}
 

Functions

cherry8x16_status_t cherry8x16_init (const uint8_t volatile *row_port, uint16_t *column_port, const uint8_t *key_lookup_matrix)
 Function for initializing the driver. More...
 
bool cherry8x16_new_packet (const uint8_t **p_key_packet, uint8_t *p_key_packet_size)
 Function for creating a new key packet if new data is available and key ghosting is not detected. More...
 

Detailed Description

Cherry 8x16 keyboard matrix driver.

Enumeration Type Documentation

Describes return values for: cherry8x16_init

Enumerator
CHERRY8x16_OK 

Operation was succesful.

CHERRY8x16_NOT_DETECTED 

Product/Revision ID was not what was expected

CHERRY8x16_INVALID_PARAMETER 

Given parameters were not valid

Function Documentation

cherry8x16_status_t cherry8x16_init ( const uint8_t volatile *  row_port,
uint16_t *  column_port,
const uint8_t *  key_lookup_matrix 
)

Function for initializing the driver.

Note
Before calling this function, setup row_port as IO inputs with pulldowns enabled and column_port as IO outputs.
Parameters
row_portPointer to GPIO port address that is used as key matrix row input.
column_portPointer to GPIO port address that is used as key matrix column output.
key_lookup_matrixIf NULL, use a default key lookup matrix. Otherwise pointer to a 128 (8x16) element array containing HID keycodes.
Returns
Return values
CHERRY8X16_OKPeripheral was initialized succesfully.
CHERRY8X16_NOT_DETECTEDCould not detect the peripheral.
bool cherry8x16_new_packet ( const uint8_t **  p_key_packet,
uint8_t *  p_key_packet_size 
)

Function for creating a new key packet if new data is available and key ghosting is not detected.

Parameters
p_key_packetArray that will hold the created key packet. Previously created packet will be discarded.
p_key_packet_sizeKey packet size in bytes.
Returns
Return values
trueIf new packet was created.
falseIf packet was not created.