/* * Squeezelite - lightweight headless squeezebox emulator * * (c) Adrian Smith 2012-2015, triode1@btinternet.com * Ralph Irving 2015-2017, ralph_irving@hotmail.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ // packet formats for slimproto #ifndef SUN #pragma pack(push, 1) #else #pragma pack(1) #endif // from S:N:Slimproto _hello_handler struct HELO_packet { char opcode[4]; u32_t length; u8_t deviceid; u8_t revision; u8_t mac[6]; u8_t uuid[16]; u16_t wlan_channellist; u32_t bytes_received_H, bytes_received_L; char lang[2]; // u8_t capabilities[]; }; // S:N:Slimproto _stat_handler struct STAT_packet { char opcode[4]; u32_t length; u32_t event; u8_t num_crlf; u8_t mas_initialized; u8_t mas_mode; u32_t stream_buffer_size; u32_t stream_buffer_fullness; u32_t bytes_received_H; u32_t bytes_received_L; u16_t signal_strength; u32_t jiffies; u32_t output_buffer_size; u32_t output_buffer_fullness; u32_t elapsed_seconds; u16_t voltage; u32_t elapsed_milliseconds; u32_t server_timestamp; u16_t error_code; }; // S:N:Slimproto _disco_handler struct DSCO_packet { char opcode[4]; u32_t length; u8_t reason; }; // S:N:Slimproto _http_response_handler struct RESP_header { char opcode[4]; u32_t length; // char header[] - added in sendRESP }; // S:N:Slimproto _http_metadata_handler struct META_header { char opcode[4]; u32_t length; // char metadata[] }; // S:N:Slimproto _http_setting_handler struct SETD_header { char opcode[4]; u32_t length; u8_t id; // data }; #if IR struct IR_packet { char opcode[4]; u32_t length; u32_t jiffies; u8_t format; // ignored by server u8_t bits; // ignored by server u32_t ir_code; }; #endif // from S:P:Squeezebox stream_s struct strm_packet { char opcode[4]; char command; u8_t autostart; u8_t format; u8_t pcm_sample_size; u8_t pcm_sample_rate; u8_t pcm_channels; u8_t pcm_endianness; u8_t threshold; u8_t spdif_enable; u8_t transition_period; u8_t transition_type; u8_t flags; u8_t output_threshold; u8_t slaves; u32_t replay_gain; u16_t server_port; u32_t server_ip; //char request_string[]; }; // S:P:Squeezebox2 struct aude_packet { char opcode[4]; u8_t enable_spdif; u8_t enable_dac; }; // S:P:Squeezebox2 struct audg_packet { char opcode[4]; u32_t old_gainL; // unused u32_t old_gainR; // unused u8_t adjust; u8_t preamp; // unused u32_t gainL; u32_t gainR; // squence ids - unused }; // S:P:Squeezebox2 struct cont_packet { char opcode[4]; u32_t metaint; u8_t loop; // guids we don't use }; // S:C:Commands struct serv_packet { char opcode[4]; u32_t server_ip; // possible sync group }; // S:P:Squeezebox2 struct setd_packet { char opcode[4]; u8_t id; char data[]; }; // codec open - this is an extension to slimproto to allow the server to read the header and then return decode params struct codc_packet { char opcode[4]; u8_t format; u8_t pcm_sample_size; u8_t pcm_sample_rate; u8_t pcm_channels; u8_t pcm_endianness; }; // initially Boom struct audo_packet { char opcode[4]; u8_t config; }; #ifndef SUN #pragma pack(pop) #else #pragma pack() #endif