| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | 
							- #ifndef EMBEDDED_H
 
- #define EMBEDDED_H
 
- #include <ctype.h>
 
- #include <inttypes.h>
 
- /* 	must provide 
 
- 		- mutex_create_p
 
- 		- pthread_create_name
 
- 		- register_xxx (see below)
 
- 		- stack size
 
- 		- s16_t, s32_t, s64_t and u64_t
 
- 		- PLAYER_ID / custom_player_id
 
- 	can overload (use #define)
 
- 		- exit
 
- 		- gettime_ms
 
- 		- BASE_CAP
 
- 		- EXT_BSS 		
 
- 	recommended to add platform specific include(s) here
 
- */	
 
- typedef int16_t   s16_t;
 
- typedef int32_t   s32_t;
 
- typedef int64_t   s64_t;
 
- typedef unsigned long long u64_t;
 
- #ifndef PTHREAD_STACK_MIN
 
- #define PTHREAD_STACK_MIN	256
 
- #endif
 
- #ifndef _CONST
 
- #define _CONST
 
- #endif
 
- #define STREAM_THREAD_STACK_SIZE  4 * 1024
 
- #define DECODE_THREAD_STACK_SIZE 14 * 1024
 
- #define OUTPUT_THREAD_STACK_SIZE  4 * 1024
 
- #define IR_THREAD_STACK_SIZE      4 * 1024
 
- // number of times the 5s search for a server will happen before slimproto exits (0 = no limit)
 
- #define MAX_SERVER_RETRIES	5
 
- // or can be as simple as #define PLAYER_ID 100
 
- #define PLAYER_ID custom_player_id
 
- extern u8_t custom_player_id;
 
- #if BYTES_PER_FRAME == 8
 
- #define BASE_CAP "Model=squeezeesp32,AccuratePlayPoints=1,HasDigitalOut=1,HasPolarityInversion=1,Balance=1,Depth=32,Firmware=" VERSION 
 
- #else
 
- #define BASE_CAP "Model=squeezeesp32,AccuratePlayPoints=1,HasDigitalOut=1,HasPolarityInversion=1,Balance=1,Depth=16,Firmware=" VERSION 
 
- #endif
 
- // to force some special buffer attribute
 
- #define EXT_BSS __attribute__((section(".ext_ram.bss"))) 
 
- // all exit() calls are made from main thread (or a function called in main thread)
 
- #define exit(code) { int ret = code; pthread_exit(&ret); }
 
- #define gettime_ms _gettime_ms_
 
- #define mutex_create_p(m) mutex_create(m)
 
- uint32_t 	_gettime_ms_(void);
 
- int			pthread_create_name(pthread_t *thread, _CONST pthread_attr_t  *attr, 
 
- 				   void *(*start_routine)( void * ), void *arg, char *name);
 
- // must provide	of #define as empty macros		
 
- void		embedded_init(void);
 
- void 		register_external(void);
 
- void 		deregister_external(void);
 
- void 		decode_restore(int external);
 
- // used when other client wants to use slimproto socket to send messages
 
- extern mutex_type slimp_mutex;
 
- #define LOCK_P   mutex_lock(slimp_mutex)
 
- #define UNLOCK_P mutex_unlock(slimp_mutex)
 
- // bitmap of plugs status
 
- #define PLUG_LINE_IN 	0x01
 
- #define PLUG_LINE_OUT	0x02
 
- #define PLUG_HEADPHONE	0x04
 
- u16_t	get_RSSI(void);			// must provide or define as 0xffff
 
- u16_t	get_plugged(void);		// must provide or define as 0x0
 
- u16_t	get_battery(void);		// must provide 12 bits data or define as 0x0 (exact meaning is device-dependant)
 
- // set name 
 
- void set_name(char *name);		// can be defined as an empty macro
 
- // to be defined to nothing if you don't want to support these
 
- extern struct visu_export_s {
 
- 	pthread_mutex_t mutex;
 
- 	u32_t level, size, rate, gain;
 
- 	void *buffer;
 
- 	bool running;
 
- } visu_export;
 
- void 		output_visu_export(void *frames, frames_t out_frames, u32_t rate, bool silence, u32_t gain);
 
- void 		output_visu_init(log_level level);
 
- void 		output_visu_close(void);
 
- // optional, please chain if used 
 
- bool		(*slimp_handler)(u8_t *data, int len);
 
- void 		(*slimp_loop)(void);
 
- void 		(*server_notify)(in_addr_t ip, u16_t hport, u16_t cport);
 
- 	   
 
- #endif // EMBEDDED_H
 
 
  |