123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #ifndef AD0X0_I2C_EXT_H
- #define AD0X0_I2C_EXT_H
- #include "main.h"
- #include "ad0x0_i2c.h"
- typedef __packed struct{
- uint8_t *pbuf_tx,*pbuf_rx;
- uint16_t pbuf_count;
- uint8_t addr_w,addr_r;
- //uint8_t calls_count;
- uint8_t sf_id;//в пуше присваиваем, когда вызываем ф-ю, передаем как пар-р
- //void (*pSetTXRXBuf)(__packed struct ad0x0_sfunc_t *self);
- //ф-ии pre вызываются ПЕРЕД командами SPI, НЕ ОСВОБОЖДАЕТ ячейку
- void (*p_pre_SetTXRXBuf)(ad0x0_i2c_desc_s *pdspi,void *_p_ad0x0_i2c_ext_t);//void EXT_SetTXRXBuf(ad0x0_i2c_desc_s *pdspi,uint8_t _handle)
- void (*_p_pre_cb_func)(uint8_t _sf_id,ad0x0_i2c_desc_s *pdspi,void *p_i2c_ext_t);
- //ф-ии post вызываются ПОСЛЕ команд SPI и освобождает ячейку
- void (*_p_post_cb_func)(uint8_t _sf_id,ad0x0_i2c_desc_s *pdspi,void *p_i2c_ext_t);
- uint8_t OLED_i2c_databyte;
- uint32_t user_data0,user_data1;
- void *user_pointer0,*user_pointer1;//
- uint8_t reference_count;//ячейка не освобождается >0!!!!!!!!!!!!!
- //SPI_TypeDef *spi;
- }ad0x0_i2c_ext_t;
- //typedef void (*p_i2c_ext_func_t)(uint8_t _sf_id,ad0x0_i2c_desc_s *pdspi,void *p_i2c_ext_t);
- void ad0x0_i2c_ext_init(void (*perr)(void));
- void ad0x0_i2c_ext_clear(ad0x0_i2c_ext_t *pf);//вызывать после get
- //выдать ячейку EXT. Может и не выдать!!! проверять надо возвр. значение
- uint8_t ad0x0_i2c_ext_get(uint8_t *_p_out_handle,ad0x0_i2c_ext_t **_p_out_desc);
- //void ad0x0_sfunc_SetBufParams(ad0x0_i2c_desc_s *pdspi,ad0x0_sfunc_t *pf);//
- //вызывает ф-ии EXT перед командой SPI (иниц.буферов и т.п.)
- void ad0x0_i2c_ext_pre_process(ad0x0_i2c_desc_s *pdspi,uint8_t _handle);
- //вызывает ф-ии EXT ПОСЛЕ команды SPI (логика ветвлений) и ОСВОБОЖДАЕТ ячейку (не всегда, ref_count...)
- void ad0x0_i2c_ext_post_process(ad0x0_i2c_desc_s *pdspi,uint8_t _handle);
- ad0x0_i2c_ext_t *ad0x0_i2c_ext_get_pdesc(uint8_t _handle);
- void ad0x0_i2c_ext_release(uint8_t _handle);
- uint8_t ad0x0_i2c_ext_get_count(void);//убрать после отладки!!!!! нужно чтобы понять что все или не все очистил при перезагрузке и2ц
- void EXT_SetTXRXBuf_i2c(ad0x0_i2c_desc_s *pdspi,void *_p_ad0x0_i2c_ext_t);
- #endif
|