blob: f4be0cc1950eb17170f92139159f11f0447ef84e (
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
/*
* This file is part of libsamsung-ipc.
*
* Copyright (C) 2011-2013 Paul Kocialkowski <contact@paulk.fr>
* Copyright (C) 2011 Simon Busch <morphis@gravedo.de>
* Copyright (C) 2010-2011 Joerie de Gram <j.de.gram@gmail.com>
*
* 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_NET_H__
#define __SAMSUNG_IPC_NET_H__
/*
* Types
*/
#define IPC_NET_PREF_PLMN 0x0801
#define IPC_NET_PLMN_SEL 0x0802
#define IPC_NET_CURRENT_PLMN 0x0803
#define IPC_NET_PLMN_LIST 0x0804
#define IPC_NET_REGIST 0x0805
#define IPC_NET_SUBSCRIBER_NUM 0x0806
#define IPC_NET_BAND_SEL 0x0807
#define IPC_NET_SERVICE_DOMAIN_CONFIG 0x0808
#define IPC_NET_POWERON_ATTACH 0x0809
#define IPC_NET_MODE_SEL 0x080A
#define IPC_NET_ACQ_ORDER 0x080B
#define IPC_NET_IDENTITY 0x080C
#define IPC_NET_CURRENT_RRC_STATUS 0x080D
/*
* Values
*/
#define IPC_NET_PLMN_STATUS_AVAILABLE 0x02
#define IPC_NET_PLMN_STATUS_CURRENT 0x03
#define IPC_NET_PLMN_STATUS_FORBIDDEN 0x04
#define IPC_NET_PLMN_SEL_MANUAL 0x03
#define IPC_NET_PLMN_SEL_AUTO 0x02
#define IPC_NET_REGISTRATION_STATE_NONE 0x01
#define IPC_NET_REGISTRATION_STATE_HOME 0x02
#define IPC_NET_REGISTRATION_STATE_SEARCHING 0x03
#define IPC_NET_REGISTRATION_STATE_EMERGENCY 0x04
#define IPC_NET_REGISTRATION_STATE_UNKNOWN 0x05
#define IPC_NET_REGISTRATION_STATE_ROAMING 0x06
#define IPC_NET_ACCESS_TECHNOLOGY_UNKNOWN 0xff
#define IPC_NET_ACCESS_TECHNOLOGY_GSM 0x00
#define IPC_NET_ACCESS_TECHNOLOGY_GSM2 0x01
#define IPC_NET_ACCESS_TECHNOLOGY_GPRS 0x02
#define IPC_NET_ACCESS_TECHNOLOGY_EDGE 0x03
#define IPC_NET_ACCESS_TECHNOLOGY_UMTS 0x04
#define IPC_NET_SERVICE_DOMAIN_GSM 0x02
#define IPC_NET_SERVICE_DOMAIN_GPRS 0x03
#define IPC_NET_MODE_SEL_GSM_UMTS 0x01
#define IPC_NET_MODE_SEL_GSM_ONLY 0x02
#define IPC_NET_MODE_SEL_UMTS_ONLY 0x03
/*
* Structures
*/
struct ipc_net_regist_get {
/* ignore, ipc_net_regist_get_setup will do for you */
unsigned char net;
/* IPC_NET_SERVICE_DOMAIN_.. */
unsigned char domain;
} __attribute__((__packed__));
struct ipc_net_regist_response {
/* IPC_NET_ACCESS_TECHNOLOGY_... */
unsigned char act;
/* IPC_NET_SERVICE_DOMAIN_... */
unsigned char domain;
/* IPC_NET_REGISTRATION_STATE_... */
unsigned char reg_state;
unsigned char edge;
unsigned short lac;
unsigned int cid;
char rej_cause;
} __attribute__((__packed__));
struct ipc_net_current_plmn_response {
char unk0;
unsigned char slevel;
char unk1;
char plmn[5];
unsigned char type; // IPC_NET_SERVICE_TYPE_... ?
unsigned short lac;
} __attribute__((__packed__));
struct ipc_net_plmn_entry {
unsigned char status; // IPC_NET_PLMN_STATUS_...
char plmn[6];
unsigned char type;
char unk[2];
} __attribute__((__packed__));
struct ipc_net_plmn_entries {
unsigned char num;
} __attribute__((__packed__));
struct ipc_net_mode_sel {
unsigned char mode_sel;
} __attribute__((__packed__));
struct ipc_net_plmn_sel_get {
unsigned char plmn_sel;
} __attribute__((__packed__));
struct ipc_net_plmn_sel_set {
unsigned char mode;
char plmn[6]; // 5 plmn bytes + 1 '#' byte
unsigned char act; // IPC_NET_ACCESS_TECHNOLOGY_...
} __attribute__((__packed__));
/*
* Helpers
*/
void ipc_net_regist_get_setup(struct ipc_net_regist_get *message,
unsigned char domain);
void ipc_net_plmn_sel_set_setup(struct ipc_net_plmn_sel_set *message,
unsigned char mode, char *plmn, unsigned char act);
#endif
// vim:ts=4:sw=4:expandtab
|