Files
firmware/right/src/slave_drivers/uhk_module_driver.h

48 lines
1.2 KiB
C

#ifndef __SLAVE_DRIVER_UHK_MODULE_H__
#define __SLAVE_DRIVER_UHK_MODULE_H__
// Includes:
#include "fsl_common.h"
#include "crc16.h"
// Macros:
#define UHK_MODULE_MAX_COUNT 3
#define KEY_STATE_SIZE (LEFT_KEYBOARD_HALF_KEY_COUNT/8 + 1)
#define KEY_STATE_BUFFER_SIZE (KEY_STATE_SIZE + CRC16_HASH_LENGTH)
// Typedefs:
typedef enum {
UhkModuleId_LeftKeyboardHalf,
UhkModuleId_LeftAddon,
UhkModuleId_RightAddon,
} uhk_module_id_t;
typedef enum {
UhkModulePhase_SendKeystatesRequestCommand,
UhkModulePhase_ReceiveKeystates,
UhkModulePhase_SendPwmBrightnessCommand,
UhkModulePhase_SendTestLedCommand,
UhkModulePhase_SendDisableKeyMatrixScanState,
UhkModulePhase_SendLedPwmBrightness,
UhkModulePhase_DisableLedSdb,
} uhk_module_phase_t;
typedef struct {
uint8_t ledPwmBrightness;
bool isTestLedOn;
} uhk_module_state_t;
// Variables:
extern uhk_module_state_t UhkModuleStates[UHK_MODULE_MAX_COUNT];
// Functions:
extern void UhkModuleSlaveDriver_Init(uint8_t uhkModuleId);
extern void UhkModuleSlaveDriver_Update(uint8_t uhkModuleId);
#endif