| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #include <stdint.h>
- #include <stddef.h>
- #include <stdbool.h>
- #include <cx/chlcd.h>
- #include <cx/chlcd/__helper.h>
- static inline chlcd_error_t __chlcd_hd44780_decoder_init(
- void *connector,
- chlcd_sender_t sender
- ) {
- if (sender(connector, 0b0010, true, true) != CHLCD_SUCCESS) {
- return CHLCD_SEND_ERROR;
- }
- if (sender(connector, 0b00001111, true, false) != CHLCD_SUCCESS) {
- return CHLCD_SEND_ERROR;
- }
- return CHLCD_SUCCESS;
- }
- static inline chlcd_error_t __chlcd_hd44780_decoder_clear(
- void *connector,
- chlcd_sender_t sender
- ) {
- if (sender(connector, 0b00000001, true, false) != CHLCD_SUCCESS) {
- return CHLCD_SEND_ERROR;
- }
-
- if (sender(connector, 0b00000010, true, false) != CHLCD_SUCCESS) {
- return CHLCD_SEND_ERROR;
- }
- return CHLCD_SUCCESS;
- }
- static inline chlcd_error_t __chlcd_hd44780_decoder_send_char(
- void *connector,
- chlcd_sender_t sender,
- chlcd_data_t content
- ) {
- return sender(connector, content, false, false);
- }
- chlcd_error_t chlcd_hd44780_decoder(
- chlcd_command_t command,
- chlcd_data_t content,
- void *connector,
- chlcd_sender_t sender
- ) {
- switch (command) {
- case CHLCD_INIT:
- return __chlcd_hd44780_decoder_init(connector, sender);
- case CHLCD_CLEAR:
- return __chlcd_hd44780_decoder_clear(connector, sender);
- case CHLCD_SEND_CHAR:
- return __chlcd_hd44780_decoder_send_char(
- connector,
- sender,
- content
- );
- default:
- return CHLCD_BAD_ARGUMENT;
- }
- }
|