1 /* Copyright (c) 2013, The Linux Foundation. All rights reserved. 2 * 3 * Redistribution and use in source and binary forms, with or without 4 * modification, are permitted provided that the following conditions are 5 * met: 6 * * Redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * * Redistributions in binary form must reproduce the above 9 * copyright notice, this list of conditions and the following 10 * disclaimer in the documentation and/or other materials provided 11 * with the distribution. 12 * * Neither the name of The Linux Foundation nor the names of its 13 * contributors may be used to endorse or promote products derived 14 * from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 */ 29 30 #ifndef __MM_QCAMERA_SOCKET_H__ 31 #define __MM_QCAMERA_SOCKET_H__ 32 33 #include <stdint.h> 34 #include <pthread.h> 35 #include <fcntl.h> 36 #include <stdio.h> 37 #include <string.h> 38 #include <unistd.h> 39 #include <termios.h> 40 #include <assert.h> 41 #include <stdlib.h> 42 #include <ctype.h> 43 #include <signal.h> 44 #include <errno.h> 45 #include <stdarg.h> 46 #include <sys/mman.h> 47 #include <sys/time.h> 48 #include <linux/socket.h> 49 #include <arpa/inet.h> 50 #include <utils/Log.h> 51 52 #undef __FD_SET 53 #define __FD_SET(fd, fdsetp) \ 54 (((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] |= (1<<((fd) & 31))) 55 56 #undef __FD_CLR 57 #define __FD_CLR(fd, fdsetp) \ 58 (((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] &= ~(1<<((fd) & 31))) 59 60 #undef __FD_ISSET 61 #define __FD_ISSET(fd, fdsetp) \ 62 ((((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] & (1<<((fd) & 31))) != 0) 63 64 #undef __FD_ZERO 65 #define __FD_ZERO(fdsetp) \ 66 (memset (fdsetp, 0, sizeof (*(fd_set *)(fdsetp)))) 67 68 #define TUNESERVER_MAX_RECV 2048 69 #define TUNESERVER_MAX(a, b) (((a) > (b)) ? (a) : (b)) 70 71 #define TUNESERVER_GET_LIST 1014 72 #define TUNESERVER_GET_PARMS 1015 73 #define TUNESERVER_SET_PARMS 1016 74 #define TUNESERVER_MISC_CMDS 1021 75 76 #define TUNE_PREV_GET_INFO 0x0001 77 #define TUNE_PREV_CH_CNK_SIZE 0x0002 78 #define TUNE_PREV_GET_PREV_FRAME 0x0003 79 #define TUNE_PREV_GET_JPG_SNAP 0x0004 80 #define TUNE_PREV_GET_RAW_SNAP 0x0005 81 #define TUNE_PREV_GET_RAW_PREV 0x0006 82 83 typedef struct { 84 char data[128]; 85 } tuneserver_misc_cmd; 86 87 typedef enum { 88 TUNESERVER_RECV_COMMAND = 1, 89 TUNESERVER_RECV_PAYLOAD_SIZE, 90 TUNESERVER_RECV_PAYLOAD, 91 TUNESERVER_RECV_RESPONSE, 92 TUNESERVERER_RECV_INVALID, 93 } tuneserver_recv_cmd_t; 94 95 typedef struct { 96 uint16_t current_cmd; 97 tuneserver_recv_cmd_t next_recv_code; 98 uint32_t next_recv_len; 99 void *recv_buf; 100 uint32_t recv_len; 101 uint32_t send_len; 102 void *send_buf; 103 } tuneserver_protocol_t; 104 105 typedef enum { 106 TUNE_PREV_RECV_COMMAND = 1, 107 TUNE_PREV_RECV_NEWCNKSIZE, 108 TUNE_PREV_RECV_INVALID 109 } tune_prev_cmd_t; 110 111 typedef struct _eztune_preview_protocol_t { 112 uint16_t current_cmd; 113 tune_prev_cmd_t next_recv_code; 114 uint32_t next_recv_len; 115 int32_t send_len; 116 char* send_buf; 117 uint32_t send_buf_size; 118 uint32_t new_cnk_size; 119 uint32_t new_cmd_available; 120 } prserver_protocol_t; 121 122 123 int eztune_server_start(void *lib_handle); 124 125 #endif /*__MM_QCAMERA_SOCKET_H__*/ 126