/* Copyright (c) 2013-2014, 2016, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __MM_QCAMERA_SOCKET_H__
#define __MM_QCAMERA_SOCKET_H__
// System dependencies
#include <arpa/inet.h>
#undef __FD_SET
#define __FD_SET(fd, fdsetp) \
(((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] |= (1LU<<((fd) & 31)))
#undef __FD_CLR
#define __FD_CLR(fd, fdsetp) \
(((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] &= ~(1LU<<((fd) & 31)))
#undef __FD_ISSET
#define __FD_ISSET(fd, fdsetp) \
((((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] & (1LU<<((fd) & 31))) != 0)
#undef __FD_ZERO
#define __FD_ZERO(fdsetp) \
(memset (fdsetp, 0, sizeof (*(fd_set *)(fdsetp))))
#define TUNESERVER_MAX_RECV 2048
#define TUNESERVER_MAX(a, b) (((a) > (b)) ? (a) : (b))
#define TUNESERVER_GET_LIST 1014
#define TUNESERVER_GET_PARMS 1015
#define TUNESERVER_SET_PARMS 1016
#define TUNESERVER_MISC_CMDS 1021
#define TUNE_PREV_GET_INFO 0x0001
#define TUNE_PREV_CH_CNK_SIZE 0x0002
#define TUNE_PREV_GET_PREV_FRAME 0x0003
#define TUNE_PREV_GET_JPG_SNAP 0x0004
#define TUNE_PREV_GET_RAW_SNAP 0x0005
#define TUNE_PREV_GET_RAW_PREV 0x0006
typedef struct {
char data[128];
} tuneserver_misc_cmd;
typedef enum {
TUNESERVER_RECV_COMMAND = 1,
TUNESERVER_RECV_PAYLOAD_SIZE,
TUNESERVER_RECV_PAYLOAD,
TUNESERVER_RECV_RESPONSE,
TUNESERVERER_RECV_INVALID,
} tuneserver_recv_cmd_t;
typedef struct {
uint16_t current_cmd;
tuneserver_recv_cmd_t next_recv_code;
uint32_t next_recv_len;
void *recv_buf;
uint32_t recv_len;
uint32_t send_len;
void *send_buf;
} tuneserver_protocol_t;
typedef enum {
TUNE_PREV_RECV_COMMAND = 1,
TUNE_PREV_RECV_NEWCNKSIZE,
TUNE_PREV_RECV_INVALID
} tune_prev_cmd_t;
typedef struct _eztune_preview_protocol_t {
uint16_t current_cmd;
tune_prev_cmd_t next_recv_code;
uint32_t next_recv_len;
int32_t send_len;
char* send_buf;
uint32_t send_buf_size;
uint32_t new_cnk_size;
uint32_t new_cmd_available;
} prserver_protocol_t;
typedef union {
struct sockaddr addr;
struct sockaddr_in addr_in;
} mm_qcamera_sock_addr_t;
int eztune_server_start(void *lib_handle);
#endif /*__MM_QCAMERA_SOCKET_H__*/