0
mirror of https://gitlab.com/hyperglitch/jellyfish.git synced 2025-12-30 07:37:10 +00:00
2025-06-12 10:31:43 +02:00

48 lines
1.2 KiB
C

/*
* SPDX-FileCopyrightText: 2025 Igor Brkic <igor@hyperglitch.com>
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#ifndef JF_I2C_H
#define JF_I2C_H
#include <stdint.h>
#include <stdbool.h>
#include "cmsis_os.h"
#include "main.h"
typedef enum {
JF_I2C_DEST_DIGIPOT = 0x2c,
JF_I2C_DEST_DAC_ISETPLUS = 0x60,
JF_I2C_DEST_DAC_ISETMINUS = 0x61,
JF_I2C_DEST_USBPD1 = 0x29,
JF_I2C_DEST_USBPD2 = 0x28
} jf_i2c_addr_t;
typedef enum {
JF_I2C_CMD_WRITE,
JF_I2C_CMD_READ,
JF_I2C_CMD_WRITE_READ,
JF_I2C_CMD_COUNT
} jf_i2c_cmd_t;
typedef struct {
jf_i2c_addr_t addr;
jf_i2c_cmd_t cmd;
uint8_t *write_buffer;
uint8_t *read_buffer;
uint16_t size;
TaskHandle_t notify_task;
} jf_i2c_request_t;
void jf_i2c_init(I2C_HandleTypeDef *hi2c);
bool jf_i2c_add_to_queue(const jf_i2c_addr_t addr, const jf_i2c_cmd_t cmd, uint8_t *write_buffer, uint8_t *read_buffer, const uint16_t size, const bool blocking);
bool jf_i2c_add_to_queue_from_isr(jf_i2c_addr_t addr, jf_i2c_cmd_t cmd, uint8_t *write_buffer, uint8_t *read_buffer, uint16_t size);
void jf_i2c_handle_callback(I2C_HandleTypeDef *hi2c);
void jf_i2c_handle_error_callback(I2C_HandleTypeDef *hi2c);
#endif //JF_I2C_H