|
LCM — CH32V003 Light Control Module
Light Control Module, I2C slave
|
Go to the source code of this file.
Macros | |
| #define | LCM_I2C_ADDR_FACTORY 0x7FU /* заводской адрес (7 бит) */ |
| #define | LCM_I2C_SPEED_HZ 100000U /* Standard-mode I2C */ |
| #define | LCM_ID 0x01U /* ID модуля контроллера освещения (LCM) */ |
| #define | LCM_RELAY_COUNT 8U |
| #define | LCM_GROUP_COUNT 4U |
| #define | LCM_NVM_OFF_MAGIC 0U |
| #define | LCM_NVM_OFF_I2C_ADDR 1U |
| #define | LCM_NVM_OFF_GROUP_BASE 2U |
| #define | LCM_NVM_SIZE 6U |
| #define | LCM_NVM_MAGIC 0x4CU /* ASCII 'L' — признак валидной NVM */ |
| #define | LCM_LAMP_0_ON 0x00U |
| #define | LCM_LAMP_1_ON 0x01U |
| #define | LCM_LAMP_2_ON 0x02U |
| #define | LCM_LAMP_3_ON 0x03U |
| #define | LCM_LAMP_4_ON 0x04U |
| #define | LCM_LAMP_5_ON 0x05U |
| #define | LCM_LAMP_6_ON 0x06U |
| #define | LCM_LAMP_7_ON 0x07U |
| #define | LCM_LAMP_0_OFF 0x08U |
| #define | LCM_LAMP_1_OFF 0x09U |
| #define | LCM_LAMP_2_OFF 0x0AU |
| #define | LCM_LAMP_3_OFF 0x0BU |
| #define | LCM_LAMP_4_OFF 0x0CU |
| #define | LCM_LAMP_5_OFF 0x0DU |
| #define | LCM_LAMP_6_OFF 0x0EU |
| #define | LCM_LAMP_7_OFF 0x0FU |
| #define | LCM_LAMP_ALL_ON 0x10U /* все 8 реле вкл */ |
| #define | LCM_LAMP_ALL_OFF 0x11U /* все 8 реле выкл */ |
| #define | LCM_GROUP_0_ON 0x12U |
| #define | LCM_GROUP_1_ON 0x13U |
| #define | LCM_GROUP_2_ON 0x14U |
| #define | LCM_GROUP_3_ON 0x15U |
| #define | LCM_GROUP_0_OFF 0x16U |
| #define | LCM_GROUP_1_OFF 0x17U |
| #define | LCM_GROUP_2_OFF 0x18U |
| #define | LCM_GROUP_3_OFF 0x19U |
| #define | LCM_RESET 0x1AU /* сброс: адрес 0x7F, группы 0, reboot */ |
| #define | LCM_GET_ERROR 0x1CU /* код последней ошибки */ |
| #define | LCM_GET_ID 0x1DU /* ID модуля */ |
| #define | LCM_LAMP_ON 0x20U /* param: маска включаемых реле */ |
| #define | LCM_LAMP_OFF 0x21U /* param: маска выключаемых реле */ |
| #define | LCM_GROUP_ON 0x22U /* param: маска включаемых групп */ |
| #define | LCM_GROUP_OFF 0x23U /* param: маска выключаемых групп */ |
| #define | LCM_GROUP_0_SET 0x24U /* param: состав группы 0 → NVM */ |
| #define | LCM_GROUP_1_SET 0x25U |
| #define | LCM_GROUP_2_SET 0x26U |
| #define | LCM_GROUP_3_SET 0x27U |
| #define | LCM_SET_ADDR 0x28U /* param: новый 7-битный I2C-адрес */ |
| #define | LCM_ERR_NONE 0x00U /* ошибок нет */ |
| #define | LCM_ERR_UNKNOWN_CMD 0x01U /* неизвестная команда (резерв) */ |
| #define | LCM_ERR_BAD_PARAM 0x02U /* некорректный параметр (напр. addr > 0x7F) */ |
| #define | LCM_ERR_I2C_BERR 0x03U /* Bus error: нарушение протокола */ |
| #define | LCM_ERR_I2C_OVR 0x04U /* Overrun: не успели обработать DATAR */ |
| #define | LCM_ERR_I2C_ARLO 0x05U /* Arbitration lost */ |
| #define | LCM_ERR_USER_DATA_COMMIT 0x06U /* сбой записи user_data в flash */ |
| #define | LCM_ERR_USER_DATA_PARAM 0x07U /* NULL-указатель или некорректный параметр */ |
| #define | LCM_ERR_USER_DATA_RANGE 0x08U /* offset/len выходят за USER_DATA_CAPACITY */ |
| #define | LCM_ERR_USER_DATA_FLASH 0x09U /* ошибка программирования/стирания flash */ |
| #define | LCM_ERR_USER_DATA_BUSY 0x0AU /* flash занят (редко, при вложенных вызовах) */ |
| #define | LCM_ERR_GPIO_INIT 0x0BU /* сбой инициализации GPIO */ |
| #define | LCM_ERR_GPIO_SET 0x0CU /* сбой установки GPIO */ |
| #define | LCM_ERR_GPIO_GET 0x0DU /* сбой чтения уровня GPIO (readback) */ |
| #define | LCM_ERR_GPIO_CLEAR 0x0EU /* сбой очистки GPIO */ |
| #define | LCM_ERR_GPIO_SET_ALL 0x0FU /* сбой установки всех GPIO */ |
| #define | LCM_ERR_GPIO_CLEAR_ALL 0x10U /* сбой очистки всех GPIO */ |
Functions | |
| void | LCM_Module_ExecuteSingleByte (uint8_t cmd) |
| void | LCM_Module_ExecuteTwoByte (uint8_t cmd, uint8_t param) |
| void | LCM_Module_SetError (uint8_t err) |
| void | LCM_Module_ReportUserDataStatus (UserData_Status st) |
| uint8_t | LCM_Module_GetI2cAddr (void) |
| uint8_t | LCM_Module_GetRelayState (void) |
| const uint8_t * | LCM_Module_GetGroupMasks (void) |
| void | LCM_Module_Init (void) |
| void | LCM_Module_Poll (void) |
| #define LCM_ERR_BAD_PARAM 0x02U /* некорректный параметр (напр. addr > 0x7F) */ |
Definition at line 176 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_Module_ExecuteTwoByte().
| #define LCM_ERR_GPIO_CLEAR 0x0EU /* сбой очистки GPIO */ |
Definition at line 194 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_Relay_Apply().
| #define LCM_ERR_GPIO_CLEAR_ALL 0x10U /* сбой очистки всех GPIO */ |
Definition at line 196 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_Relay_Apply().
| #define LCM_ERR_GPIO_GET 0x0DU /* сбой чтения уровня GPIO (readback) */ |
Definition at line 193 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), LCM_Relay_Apply(), and LCM_Relay_Init().
| #define LCM_ERR_GPIO_INIT 0x0BU /* сбой инициализации GPIO */ |
Definition at line 191 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_Relay_Init().
| #define LCM_ERR_GPIO_SET 0x0CU /* сбой установки GPIO */ |
Definition at line 192 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_Relay_Apply().
| #define LCM_ERR_GPIO_SET_ALL 0x0FU /* сбой установки всех GPIO */ |
Definition at line 195 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_Relay_Apply().
| #define LCM_ERR_I2C_ARLO 0x05U /* Arbitration lost */ |
Definition at line 181 of file lcm_module.h.
Referenced by EventLog_LcmErrName().
| #define LCM_ERR_I2C_BERR 0x03U /* Bus error: нарушение протокола */ |
Definition at line 179 of file lcm_module.h.
Referenced by EventLog_LcmErrName().
| #define LCM_ERR_I2C_OVR 0x04U /* Overrun: не успели обработать DATAR */ |
Definition at line 180 of file lcm_module.h.
Referenced by EventLog_LcmErrName().
| #define LCM_ERR_NONE 0x00U /* ошибок нет */ |
Definition at line 174 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), LCM_Module_Init(), LCM_Relay_Apply(), LCM_Relay_Init(), LCM_SetError(), LCM_SetSuccess(), and LCM_UpdateRelayGpio().
| #define LCM_ERR_UNKNOWN_CMD 0x01U /* неизвестная команда (резерв) */ |
Definition at line 175 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_Module_ExecuteSingleByte().
| #define LCM_ERR_USER_DATA_BUSY 0x0AU /* flash занят (редко, при вложенных вызовах) */ |
Definition at line 188 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_UserDataErrorCode().
| #define LCM_ERR_USER_DATA_COMMIT 0x06U /* сбой записи user_data в flash */ |
Definition at line 184 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_SetUserDataCommitError().
| #define LCM_ERR_USER_DATA_FLASH 0x09U /* ошибка программирования/стирания flash */ |
Definition at line 187 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_UserDataErrorCode().
| #define LCM_ERR_USER_DATA_PARAM 0x07U /* NULL-указатель или некорректный параметр */ |
Definition at line 185 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_UserDataErrorCode().
| #define LCM_ERR_USER_DATA_RANGE 0x08U /* offset/len выходят за USER_DATA_CAPACITY */ |
Definition at line 186 of file lcm_module.h.
Referenced by EventLog_LcmErrName(), and LCM_UserDataErrorCode().
| #define LCM_GET_ERROR 0x1CU /* код последней ошибки */ |
Definition at line 143 of file lcm_module.h.
Referenced by LCM_IsReadCmd(), and LCM_Module_ExecuteSingleByte().
| #define LCM_GET_ID 0x1DU /* ID модуля */ |
Definition at line 144 of file lcm_module.h.
Referenced by LCM_IsReadCmd(), and LCM_Module_ExecuteSingleByte().
| #define LCM_GROUP_0_OFF 0x16U |
Definition at line 133 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_GROUP_0_ON 0x12U |
Definition at line 127 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_GROUP_0_SET 0x24U /* param: состав группы 0 → NVM */ |
Definition at line 161 of file lcm_module.h.
Referenced by LCM_Module_ExecuteTwoByte().
| #define LCM_GROUP_1_OFF 0x17U |
Definition at line 134 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_GROUP_1_ON 0x13U |
Definition at line 128 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_GROUP_1_SET 0x25U |
Definition at line 162 of file lcm_module.h.
Referenced by LCM_Module_ExecuteTwoByte().
| #define LCM_GROUP_2_OFF 0x18U |
Definition at line 135 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_GROUP_2_ON 0x14U |
Definition at line 129 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_GROUP_2_SET 0x26U |
Definition at line 163 of file lcm_module.h.
Referenced by LCM_Module_ExecuteTwoByte().
| #define LCM_GROUP_3_OFF 0x19U |
Definition at line 136 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_GROUP_3_ON 0x15U |
Definition at line 130 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_GROUP_3_SET 0x27U |
Definition at line 164 of file lcm_module.h.
Referenced by LCM_Module_ExecuteTwoByte().
| #define LCM_GROUP_COUNT 4U |
Definition at line 67 of file lcm_module.h.
Referenced by LCM_ApplyFactoryDefaults(), LCM_ApplyGroupOff(), LCM_ApplyGroupOn(), LCM_LoadConfig(), LCM_Module_Poll(), and LCM_NvmWriteConfig().
| #define LCM_GROUP_OFF 0x23U /* param: маска выключаемых групп */ |
Definition at line 159 of file lcm_module.h.
Referenced by LCM_Module_ExecuteTwoByte().
| #define LCM_GROUP_ON 0x22U /* param: маска включаемых групп */ |
Definition at line 158 of file lcm_module.h.
Referenced by LCM_Module_ExecuteTwoByte().
| #define LCM_I2C_ADDR_FACTORY 0x7FU /* заводской адрес (7 бит) */ |
Definition at line 57 of file lcm_module.h.
Referenced by LCM_ApplyFactoryDefaults(), LCM_Module_ExecuteTwoByte(), and LCM_Module_Poll().
| #define LCM_I2C_SPEED_HZ 100000U /* Standard-mode I2C */ |
Definition at line 58 of file lcm_module.h.
Referenced by LCM_I2C_Init().
| #define LCM_ID 0x01U /* ID модуля контроллера освещения (LCM) */ |
Definition at line 65 of file lcm_module.h.
Referenced by EventLog_BootBanner(), and LCM_Module_ExecuteSingleByte().
| #define LCM_LAMP_0_OFF 0x08U |
Definition at line 114 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_LAMP_0_ON 0x00U |
Definition at line 104 of file lcm_module.h.
| #define LCM_LAMP_1_OFF 0x09U |
Definition at line 115 of file lcm_module.h.
| #define LCM_LAMP_1_ON 0x01U |
Definition at line 105 of file lcm_module.h.
| #define LCM_LAMP_2_OFF 0x0AU |
Definition at line 116 of file lcm_module.h.
| #define LCM_LAMP_2_ON 0x02U |
Definition at line 106 of file lcm_module.h.
| #define LCM_LAMP_3_OFF 0x0BU |
Definition at line 117 of file lcm_module.h.
| #define LCM_LAMP_3_ON 0x03U |
Definition at line 107 of file lcm_module.h.
| #define LCM_LAMP_4_OFF 0x0CU |
Definition at line 118 of file lcm_module.h.
| #define LCM_LAMP_4_ON 0x04U |
Definition at line 108 of file lcm_module.h.
| #define LCM_LAMP_5_OFF 0x0DU |
Definition at line 119 of file lcm_module.h.
| #define LCM_LAMP_5_ON 0x05U |
Definition at line 109 of file lcm_module.h.
| #define LCM_LAMP_6_OFF 0x0EU |
Definition at line 120 of file lcm_module.h.
| #define LCM_LAMP_6_ON 0x06U |
Definition at line 110 of file lcm_module.h.
| #define LCM_LAMP_7_OFF 0x0FU |
Definition at line 121 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_LAMP_7_ON 0x07U |
Definition at line 111 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_LAMP_ALL_OFF 0x11U /* все 8 реле выкл */ |
Definition at line 124 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_LAMP_ALL_ON 0x10U /* все 8 реле вкл */ |
Definition at line 123 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_LAMP_OFF 0x21U /* param: маска выключаемых реле */ |
Definition at line 157 of file lcm_module.h.
Referenced by LCM_Module_ExecuteTwoByte().
| #define LCM_LAMP_ON 0x20U /* param: маска включаемых реле */ |
Definition at line 156 of file lcm_module.h.
Referenced by LCM_IsTwoByteCmd(), and LCM_Module_ExecuteTwoByte().
| #define LCM_NVM_MAGIC 0x4CU /* ASCII 'L' — признак валидной NVM */ |
Definition at line 90 of file lcm_module.h.
Referenced by LCM_LoadConfig(), LCM_Module_Poll(), and LCM_NvmWriteConfig().
| #define LCM_NVM_OFF_GROUP_BASE 2U |
Definition at line 88 of file lcm_module.h.
Referenced by LCM_LoadConfig(), LCM_Module_Poll(), and LCM_NvmWriteConfig().
| #define LCM_NVM_OFF_I2C_ADDR 1U |
Definition at line 87 of file lcm_module.h.
Referenced by LCM_LoadConfig(), LCM_Module_Poll(), and LCM_NvmWriteConfig().
| #define LCM_NVM_OFF_MAGIC 0U |
Definition at line 86 of file lcm_module.h.
Referenced by LCM_LoadConfig(), LCM_Module_Poll(), and LCM_NvmWriteConfig().
| #define LCM_NVM_SIZE 6U |
Definition at line 89 of file lcm_module.h.
Referenced by LCM_Module_Poll(), and LCM_NvmWriteConfig().
| #define LCM_RELAY_COUNT 8U |
Definition at line 66 of file lcm_module.h.
Referenced by LCM_Relay_Apply(), and LCM_Relay_Init().
| #define LCM_RESET 0x1AU /* сброс: адрес 0x7F, группы 0, reboot */ |
Definition at line 138 of file lcm_module.h.
Referenced by LCM_Module_ExecuteSingleByte().
| #define LCM_SET_ADDR 0x28U /* param: новый 7-битный I2C-адрес */ |
Definition at line 166 of file lcm_module.h.
Referenced by LCM_IsTwoByteCmd(), and LCM_Module_ExecuteTwoByte().
| void LCM_Module_ExecuteSingleByte | ( | uint8_t | cmd | ) |
Definition at line 302 of file lcm_module.c.
References LCM_ApplyGroupOff(), LCM_ApplyGroupOn(), LCM_ERR_UNKNOWN_CMD, LCM_GET_ERROR, LCM_GET_ID, LCM_GROUP_0_OFF, LCM_GROUP_0_ON, LCM_GROUP_1_OFF, LCM_GROUP_1_ON, LCM_GROUP_2_OFF, LCM_GROUP_2_ON, LCM_GROUP_3_OFF, LCM_GROUP_3_ON, LCM_I2C_ArmRead(), LCM_ID, LCM_LAMP_0_OFF, LCM_LAMP_7_OFF, LCM_LAMP_7_ON, LCM_LAMP_ALL_OFF, LCM_LAMP_ALL_ON, LCM_Led_ErrorOff(), LCM_RESET, LCM_SetError(), LCM_SetSuccess(), LCM_UpdateRelayGpio(), s_error_code, s_factory_reset, s_relay_state, and s_reset_requested.
Referenced by LCM_I2C_OnRxData().
| void LCM_Module_ExecuteTwoByte | ( | uint8_t | cmd, |
| uint8_t | param ) |
Definition at line 389 of file lcm_module.c.
References LCM_ApplyGroupOff(), LCM_ApplyGroupOn(), LCM_ERR_BAD_PARAM, LCM_GROUP_0_SET, LCM_GROUP_1_SET, LCM_GROUP_2_SET, LCM_GROUP_3_SET, LCM_GROUP_OFF, LCM_GROUP_ON, LCM_I2C_ADDR_FACTORY, LCM_I2C_ArmRead(), LCM_LAMP_OFF, LCM_LAMP_ON, LCM_Led_ErrorOff(), LCM_NvmWriteConfig(), LCM_SET_ADDR, LCM_SetError(), LCM_SetSuccess(), LCM_UpdateRelayGpio(), s_error_code, s_group_mask, s_i2c_addr, s_relay_state, and s_reset_requested.
Referenced by LCM_I2C_OnRxData().
| const uint8_t * LCM_Module_GetGroupMasks | ( | void | ) |
| uint8_t LCM_Module_GetI2cAddr | ( | void | ) |
| uint8_t LCM_Module_GetRelayState | ( | void | ) |
| void LCM_Module_Init | ( | void | ) |
Definition at line 483 of file lcm_module.c.
References LCM_ERR_NONE, LCM_I2C_Init(), LCM_Led_Init(), LCM_LoadConfig(), LCM_Relay_Apply(), LCM_Relay_Init(), LCM_SetError(), s_error_code, s_factory_reset, s_i2c_addr, s_nvm_dirty, s_relay_state, and s_reset_requested.
Referenced by main().
| void LCM_Module_Poll | ( | void | ) |
Definition at line 521 of file lcm_module.c.
References EventLog_Process(), EventLog_PushNvm(), EventLog_PushSystem(), LCM_GROUP_COUNT, LCM_I2C_ADDR_FACTORY, LCM_Led_Poll(), LCM_NVM_MAGIC, LCM_NVM_OFF_GROUP_BASE, LCM_NVM_OFF_I2C_ADDR, LCM_NVM_OFF_MAGIC, LCM_NVM_SIZE, LCM_SetUserDataCommitError(), LCM_SetUserDataError(), s_factory_reset, s_group_mask, s_i2c_addr, s_nvm_dirty, s_reset_requested, USER_DATA_OK, UserData_Commit(), and UserData_Write().
Referenced by main().
| void LCM_Module_ReportUserDataStatus | ( | UserData_Status | st | ) |
Definition at line 452 of file lcm_module.c.
References LCM_SetUserDataError(), and USER_DATA_OK.
Referenced by main().
| void LCM_Module_SetError | ( | uint8_t | err | ) |
Definition at line 64 of file lcm_module.c.
References LCM_SetError().