ad0x0_i2c_ext.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef AD0X0_I2C_EXT_H
  2. #define AD0X0_I2C_EXT_H
  3. #include "main.h"
  4. #include "ad0x0_i2c.h"
  5. typedef __packed struct{
  6. uint8_t *pbuf_tx,*pbuf_rx;
  7. uint16_t pbuf_count;
  8. uint8_t addr_w,addr_r;
  9. //uint8_t calls_count;
  10. uint8_t sf_id;//в пуше присваиваем, когда вызываем ф-ю, передаем как пар-р
  11. //void (*pSetTXRXBuf)(__packed struct ad0x0_sfunc_t *self);
  12. //ф-ии pre вызываются ПЕРЕД командами SPI, НЕ ОСВОБОЖДАЕТ ячейку
  13. 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)
  14. void (*_p_pre_cb_func)(uint8_t _sf_id,ad0x0_i2c_desc_s *pdspi,void *p_i2c_ext_t);
  15. //ф-ии post вызываются ПОСЛЕ команд SPI и освобождает ячейку
  16. void (*_p_post_cb_func)(uint8_t _sf_id,ad0x0_i2c_desc_s *pdspi,void *p_i2c_ext_t);
  17. uint8_t OLED_i2c_databyte;
  18. uint32_t user_data0,user_data1;
  19. void *user_pointer0,*user_pointer1;//
  20. uint8_t reference_count;//ячейка не освобождается >0!!!!!!!!!!!!!
  21. //SPI_TypeDef *spi;
  22. }ad0x0_i2c_ext_t;
  23. //typedef void (*p_i2c_ext_func_t)(uint8_t _sf_id,ad0x0_i2c_desc_s *pdspi,void *p_i2c_ext_t);
  24. void ad0x0_i2c_ext_init(void (*perr)(void));
  25. void ad0x0_i2c_ext_clear(ad0x0_i2c_ext_t *pf);//вызывать после get
  26. //выдать ячейку EXT. Может и не выдать!!! проверять надо возвр. значение
  27. uint8_t ad0x0_i2c_ext_get(uint8_t *_p_out_handle,ad0x0_i2c_ext_t **_p_out_desc);
  28. //void ad0x0_sfunc_SetBufParams(ad0x0_i2c_desc_s *pdspi,ad0x0_sfunc_t *pf);//
  29. //вызывает ф-ии EXT перед командой SPI (иниц.буферов и т.п.)
  30. void ad0x0_i2c_ext_pre_process(ad0x0_i2c_desc_s *pdspi,uint8_t _handle);
  31. //вызывает ф-ии EXT ПОСЛЕ команды SPI (логика ветвлений) и ОСВОБОЖДАЕТ ячейку (не всегда, ref_count...)
  32. void ad0x0_i2c_ext_post_process(ad0x0_i2c_desc_s *pdspi,uint8_t _handle);
  33. ad0x0_i2c_ext_t *ad0x0_i2c_ext_get_pdesc(uint8_t _handle);
  34. void ad0x0_i2c_ext_release(uint8_t _handle);
  35. uint8_t ad0x0_i2c_ext_get_count(void);//убрать после отладки!!!!! нужно чтобы понять что все или не все очистил при перезагрузке и2ц
  36. void EXT_SetTXRXBuf_i2c(ad0x0_i2c_desc_s *pdspi,void *_p_ad0x0_i2c_ext_t);
  37. #endif