blob: 6c12a253eb047aba270b9d7b87490b54d4186e92 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
/*
* This file is part of libsamsung-ipc.
*
* Copyright (C) 2013 Paul Kocialkowski <contact@oaulk.fr>
*
* libsamsung-ipc 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 2 of the License, or
* (at your option) any later version.
*
* libsamsung-ipc 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 libsamsung-ipc. If not, see <http://www.gnu.org/licenses/>.
*/
#include <samsung-ipc.h>
#ifndef __SAMSUNG_IPC_SVC_H__
#define __SAMSUNG_IPC_SVC_H__
/*
* Commands
*/
#define IPC_SVC_ENTER 0x0B01
#define IPC_SVC_END 0x0B02
#define IPC_SVC_PRO_KEYCODE 0x0B03
#define IPC_SVC_SCREEN_CFG 0x0B04
#define IPC_SVC_DISPLAY_SCREEN 0x0B05
#define IPC_SVC_CHANGE_SVC_MODE 0x0B06
#define IPC_SVC_DEVICE_TEST 0x0B07
#define IPC_SVC_DEBUG_DUMP 0x0B08
#define IPC_SVC_DEBUG_STRING 0x0B09
/*
* Values
*/
#define IPC_SVC_MODE_TEST_MANUAL 0x01
#define IPC_SVC_MODE_TEST_AUTO 0x02
#define IPC_SVC_MODE_NAM_EDIT 0x03
#define IPC_SVC_MODE_MONITOR 0x04
#define IPC_SVC_MODE_PHONE_TEST 0x05
#define IPC_SVC_TYPE_ENTER 0x00
#define IPC_SVC_TYPE_SW_VERSION_ENTER 0x01
#define IPC_SVC_TYPE_FTA_SW_VERSION_ENTER 0x02
#define IPC_SVC_TYPE_FTA_HW_VERSION_ENTER 0x03
#define IPC_SVC_TYPE_ALL_VERSION_ENTER 0x04
#define IPC_SVC_TYPE_BATTERY_INFO_ENTER 0x05
#define IPC_SVC_TYPE_CIPHERING_PROTECTION_ENTER 0x06
#define IPC_SVC_TYPE_INTEGRITY_PROTECTION_ENTER 0x07
#define IPC_SVC_TYPE_IMEI_READ_ENTER 0x08
#define IPC_SVC_TYPE_BLUETOOTH_TEST_ENTER 0x09
#define IPC_SVC_TYPE_VIBRATOR_TEST_ENTER 0x0A
#define IPC_SVC_TYPE_MELODY_TEST_ENTER 0x0B
#define IPC_SVC_TYPE_MP3_TEST_ENTER 0x0C
#define IPC_SVC_TYPE_FACTORY_RESET_ENTER 0x0D
#define IPC_SVC_TYPE_FACTORY_PRECONFIG_ENTER 0x0E
#define IPC_SVC_TYPE_TFS4_EXPLORE_ENTER 0x0F
#define IPC_SVC_TYPE_RSC_FILE_VERSION_ENTER 0x11
#define IPC_SVC_TYPE_USB_DRIVER_ENTER 0x12
#define IPC_SVC_TYPE_USB_UART_DIAG_CONTROL_ENTER 0x13
#define IPC_SVC_TYPE_RRC_VERSION_ENTER 0x14
#define IPC_SVC_TYPE_GPSONE_SS_TEST_ENTER 0x15
#define IPC_SVC_TYPE_BAND_SEL_ENTER 0x16
#define IPC_SVC_TYPE_GCF_TESTMODE_ENTER 0x17
#define IPC_SVC_TYPE_GSM_FACTORY_AUDIO_LB_ENTER 0x18
#define IPC_SVC_TYPE_FACTORY_VF_TEST_ENTER 0x19
#define IPC_SVC_TYPE_TOTAL_CALL_TIME_INFO_ENTER 0x1A
#define IPC_SVC_TYPE_SELLOUT_SMS_ENABLE_ENTER 0x1B
#define IPC_SVC_TYPE_SELLOUT_SMS_DISABLE_ENTER 0x1C
#define IPC_SVC_TYPE_SELLOUT_SMS_TEST_MODE_ON 0x1D
#define IPC_SVC_TYPE_SELLOUT_SMS_PRODUCT_MODE_ON 0x1E
#define IPC_SVC_TYPE_GET_SELLOUT_SMS_INFO_ENTER 0x1F
#define IPC_SVC_TYPE_TST_AUTO_ANSWER_ENTER 0x20
#define IPC_SVC_TYPE_TST_NV_RESET_ENTER 0x21
#define IPC_SVC_TYPE_TST_FTA_SW_VERSION_ENTER 0x22
#define IPC_SVC_TYPE_TST_FTA_HW_VERSION_ENTER 0x23
/*
* Structures
*/
struct ipc_svc_enter_data {
unsigned char mode; // IPC_SVC_MODE
unsigned char type; // IPC_SVC_TYPE
unsigned char magic;
} __attribute__((__packed__));
struct ipc_svc_end_data {
unsigned char mode; // IPC_SVC_MODE
} __attribute__((__packed__));
struct ipc_svc_pro_keycode_data {
unsigned char key;
} __attribute__((__packed__));
struct ipc_svc_screen_cfg_data {
unsigned char count;
unsigned char unknown;
} __attribute__((__packed__));
struct ipc_svc_display_screen_header {
unsigned char count;
} __attribute__((__packed__));
struct ipc_svc_display_screen_entry {
unsigned short index;
char line[32];
} __attribute__((__packed__));
struct ipc_svc_change_svc_mode_data {
unsigned char mode; // IPC_SVC_MODE
} __attribute__((__packed__));
/*
* Helpers
*/
int ipc_svc_enter_setup(struct ipc_svc_enter_data *data,
unsigned char mode, unsigned char type);
unsigned char ipc_svc_display_screen_count_extract(const void *data, size_t size);
struct ipc_svc_display_screen_entry *ipc_svc_display_screen_extract(const void *data,
size_t size, unsigned int index);
#endif
// vim:ts=4:sw=4:expandtab
|