aboutsummaryrefslogtreecommitdiffstats
path: root/include/svc.h
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