embedded.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #ifndef EMBEDDED_H
  2. #define EMBEDDED_H
  3. #include <ctype.h>
  4. #include <inttypes.h>
  5. /* must provide
  6. - mutex_create_p
  7. - pthread_create_name
  8. - stack size
  9. - s16_t, s32_t, s64_t and u64_t
  10. - PLAYER_ID / custom_player_id
  11. can overload (use #define)
  12. - exit
  13. - gettime_ms
  14. - BASE_CAP
  15. - EXT_BSS
  16. recommended to add platform specific include(s) here
  17. */
  18. #ifndef PTHREAD_STACK_MIN
  19. #define PTHREAD_STACK_MIN 256
  20. #endif
  21. #ifndef _CONST
  22. #define _CONST
  23. #endif
  24. #define STREAM_THREAD_STACK_SIZE 6 * 1024
  25. #define DECODE_THREAD_STACK_SIZE 16 * 1024
  26. #define OUTPUT_THREAD_STACK_SIZE 6 * 1024
  27. #define IR_THREAD_STACK_SIZE 6 * 1024
  28. // or can be as simple as #define PLAYER_ID 100
  29. #define PLAYER_ID custom_player_id;
  30. extern u8_t custom_player_id;
  31. #define BASE_CAP "Model=squeezeesp32,AccuratePlayPoints=1,HasDigitalOut=1,HasPolarityInversion=1,Firmware=" VERSION
  32. #define EXT_BSS __attribute__((section(".ext_ram.bss")))
  33. typedef int16_t s16_t;
  34. typedef int32_t s32_t;
  35. typedef int64_t s64_t;
  36. typedef unsigned long long u64_t;
  37. // all exit() calls are made from main thread (or a function called in main thread)
  38. #define exit(code) { int ret = code; pthread_exit(&ret); }
  39. #define gettime_ms _gettime_ms_
  40. #define mutex_create_p(m) mutex_create(m)
  41. uint32_t _gettime_ms_(void);
  42. int pthread_create_name(pthread_t *thread, _CONST pthread_attr_t *attr,
  43. void *(*start_routine)( void * ), void *arg, char *name);
  44. // must provide of #define as empty macros
  45. void embedded_init(void);
  46. void register_external(void);
  47. void deregister_external(void);
  48. void decode_restore(int external);
  49. // to be defined to nothing if you don't want to support these
  50. extern struct visu_export_s {
  51. pthread_mutex_t mutex;
  52. u32_t level, size, rate;
  53. s16_t *buffer;
  54. bool running;
  55. } visu_export;
  56. void output_visu_export(s16_t *frames, frames_t out_frames, u32_t rate, bool silence);
  57. void output_visu_init(log_level level);
  58. void output_visu_close(void);
  59. // optional, please chain if used
  60. bool (*slimp_handler)(u8_t *data, int len);
  61. void (*slimp_loop)(void);
  62. void (*server_notify)(in_addr_t ip, u16_t hport, u16_t cport);
  63. #endif // EMBEDDED_H