ad0x0_spi_ext.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef AD0X0_SPI_EXT_H
  2. #define AD0X0_SPI_EXT_H
  3. #include "main.h"
  4. #include "ad0x0_spi.h"
  5. typedef __packed struct{
  6. uint8_t *pbuf_tx,*pbuf_rx,pbuf_count;
  7. //uint8_t calls_count;
  8. uint8_t sf_id;//в пуше присваиваем, когда вызываем ф-ю, передаем как пар-р
  9. //void (*pSetTXRXBuf)(__packed struct ad0x0_sfunc_t *self);
  10. //ф-ии pre вызываются ПЕРЕД командами SPI, НЕ ОСВОБОЖДАЕТ ячейку
  11. void (*p_pre_SetTXRXBuf)(ad0x0_spi_desc_s *pdspi,void *_p_ad0x0_spi_ext_t);//void EXT_SetTXRXBuf(ad0x0_spi_desc_s *pdspi,uint8_t _handle)
  12. void (*_p_pre_cb_func)(uint8_t _sf_id,ad0x0_spi_desc_s *pdspi,void *p_spi_ext_t);
  13. //ф-ии post вызываются ПОСЛЕ команд SPI и освобождает ячейку
  14. void (*_p_post_cb_func)(uint8_t _sf_id,ad0x0_spi_desc_s *pdspi,void *p_spi_ext_t);
  15. uint32_t user_data0,user_data1;
  16. void *user_pointer0,*user_pointer1;//
  17. uint8_t reference_count;//ячейка не освобождается >0!!!!!!!!!!!!!
  18. SPI_TypeDef *spi;
  19. }ad0x0_spi_ext_t;
  20. typedef void (*p_ext_func_t)(uint8_t _sf_id,ad0x0_spi_desc_s *pdspi,void *p_spi_ext_t);
  21. void ad0x0_spi_ext_init(void (*perr)(void));
  22. void ad0x0_spi_ext_clear(ad0x0_spi_ext_t *pf);//вызывать после get
  23. //выдать ячейку EXT. Может и не выдать!!! проверять надо возвр. значение
  24. uint8_t ad0x0_spi_ext_get(uint8_t *_p_out_handle,ad0x0_spi_ext_t **_p_out_desc);
  25. //void ad0x0_sfunc_SetBufParams(ad0x0_spi_desc_s *pdspi,ad0x0_sfunc_t *pf);//
  26. //вызывает ф-ии EXT перед командой SPI (иниц.буферов и т.п.)
  27. void ad0x0_spi_ext_pre_process(ad0x0_spi_desc_s *pdspi,uint8_t _handle);
  28. //вызывает ф-ии EXT ПОСЛЕ команды SPI (логика ветвлений) и ОСВОБОЖДАЕТ ячейку (не всегда, ref_count...)
  29. void ad0x0_spi_ext_post_process(ad0x0_spi_desc_s *pdspi,uint8_t _handle);
  30. ad0x0_spi_ext_t *ad0x0_spi_ext_get_pdesc(uint8_t _handle);
  31. void EXT_SetTXRXBuf(ad0x0_spi_desc_s *pdspi,void *_p_ad0x0_spi_ext_t);
  32. #endif