wangzhibo
4 天以前 ae6f40460dcd56af6c5f60ba52c883854c3bac55
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
/*  Copyright (C) 2016-2024 Andreas Shimokawa, Carsten Pfeiffer, João
    Paulo Barraca, Lesur Frederic
 
    This file is part of Gadgetbridge.
 
    Gadgetbridge is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published
    by the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    Gadgetbridge 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 Affero General Public License for more details.
 
    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.hplus;
 
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
 
public final class HPlusConstants {
 
    public static final UUID UUID_CHARACTERISTIC_CONTROL = UUID.fromString("14702856-620a-3973-7c78-9cfff0876abd");
    public static final UUID UUID_CHARACTERISTIC_MEASURE = UUID.fromString("14702853-620a-3973-7c78-9cfff0876abd");
    public static final UUID UUID_SERVICE_HP = UUID.fromString("14701820-620a-3973-7c78-9cfff0876abd");
 
    public static final byte ARG_WRIST_LEFT = 0; //Guess...
    public static final byte ARG_WRIST_RIGHT = 1; //Guess...
 
    public static final byte ARG_LANGUAGE_CN = 1;
    public static final byte ARG_LANGUAGE_EN = 2;
 
    public static final byte ARG_TIMEMODE_24H = 1;
    public static final byte ARG_TIMEMODE_12H = 0;
 
    public static final byte ARG_UNIT_METRIC = 0;
    public static final byte ARG_UNIT_IMPERIAL = 1;
 
    public static final byte ARG_GENDER_MALE = 0;
    public static final byte ARG_GENDER_FEMALE = 1;
 
    public static final byte ARG_HEARTRATE_MEASURE_ON = 11;
    public static final byte ARG_HEARTRATE_MEASURE_OFF = 22;
 
    public static final byte ARG_HEARTRATE_ALLDAY_ON = 0x0A;
    public static final byte ARG_HEARTRATE_ALLDAY_OFF = (byte) 0xff;
 
    public static final byte INCOMING_CALL_STATE_DISABLED_THRESHOLD = 0x7B;
    public static final byte INCOMING_CALL_STATE_ENABLED = (byte) 0xAA;
 
    public static final byte ARG_ALARM_DISABLE = (byte) -1;
 
    public static final byte[] CMD_SET_PREF_START = new byte[]{0x4f, 0x5a};
    public static final byte[] CMD_SET_PREF_START1 = new byte[]{0x4d};
    //public static final byte CMD_SET_ALARM = 0x4c; Unknown
    public static final byte CMD_SET_ALARM = 0x0c;
    public static final byte CMD_SET_LANGUAGE = 0x22;
    public static final byte CMD_SET_TIMEMODE = 0x47;
    public static final byte CMD_SET_UNITS = 0x48;
    public static final byte CMD_SET_GENDER = 0x2d;
    public static final byte CMD_SET_DATE = 0x08;
    public static final byte CMD_SET_TIME = 0x09;
    public static final byte CMD_SET_WEEK = 0x2a;
    public static final byte CMD_SET_PREF_SIT = 0x1e;
    public static final byte CMD_SET_WEIGHT = 0x05;
    public static final byte CMD_HEIGHT = 0x04;
    public static final byte CMD_SET_AGE = 0x2c;
    public static final byte CMD_SET_GOAL = 0x26;
    public static final byte CMD_SET_SCREENTIME = 0x0b;
    public static final byte CMD_SET_BLOOD = 0x4e; //??
 
    public static final byte CMD_SET_FINDME = 0x0a;
    public static final byte ARG_FINDME_ON = 0x01;
    public static final byte ARG_FINDME_OFF = 0x02;
 
    public static final byte CMD_SET_END = 0x4f;
    public static final byte CMD_SET_INCOMING_CALL_NUMBER = 0x23;
    public static final byte CMD_SET_ALLDAY_HRM = 0x35;
    public static final byte CMD_ACTION_INCOMING_CALL = 0x41;
    public static final byte CMD_SET_CONF_END = 0x4f;
    public static final byte CMD_SET_PREFS = 0x50;
    public static final byte CMD_SET_SIT_INTERVAL = 0x51;
    public static final byte CMD_SET_HEARTRATE_STATE = 0x32;
    public static final byte CMD_SET_WEATHER_STATE = 0x5f;
 
    //GET messages
    public static final byte CMD_GET_VERSION = 0x17;
    public static final byte CMD_GET_ACTIVE_DAY = 0x27;
    public static final byte CMD_GET_DAY_DATA = 0x15;
    public static final byte CMD_GET_SLEEP = 0x19;
    public static final byte CMD_GET_CURR_DATA = 0x16;
    public static final byte CMD_GET_DEVICE_ID = 0x24;
 
    public static final byte CMD_ACTION_INCOMING_SOCIAL = 0x31;
    //public static final byte COMMAND_ACTION_INCOMING_SMS = 0x40; //Unknown
    public static final byte CMD_ACTION_DISPLAY_TEXT = 0x43;
 
    public static final byte CMD_ACTION_DISPLAY_TEXT_NAME = 0x3F;
    public static final byte CMD_ACTION_DISPLAY_TEXT_NAME_CN = 0x3E; //Text in GB2312?
    public static final byte[] CMD_ACTION_HELLO = new byte[]{0x01, 0x00};
    public static final byte CMD_SHUTDOWN = 0x5B;
    public static final byte ARG_SHUTDOWN_EN = 0x5A;
 
    public static final byte CMD_FACTORY_RESET = -74;
    public static final byte ARG_FACTORY_RESET_EN = 0x5A;
 
    public static final byte CMD_SET_INCOMING_MESSAGE = 0x07;
    public static final byte CMD_SET_INCOMING_CALL = 0x06;
    public static final byte ARG_INCOMING_CALL = (byte) -86;
    public static final byte ARG_INCOMING_MESSAGE = (byte) -86;
 
    //Incoming Messages
    public static final byte DATA_STATS = 0x33;
    public static final byte DATA_STEPS = 0x36;
    public static final byte DATA_DAY_SUMMARY = 0x38;
    public static final byte DATA_DAY_SUMMARY_ALT = 0x39;
    public static final byte DATA_SLEEP = 0x1A;
    public static final byte DATA_VERSION = 0x18;
    public static final byte DATA_VERSION1 = 0x2E;
    public static final byte DATA_DAY_UNKNOWN = 0x52; //To be defined
    public static final byte DATA_UNKNOWN = 0x4d;
 
    public static final String PREF_HPLUS_SCREENTIME = "hplus_screentime";
    public static final String PREF_HPLUS_ALLDAYHR = "hplus_alldayhr";
    public static final String PREF_HPLUS_SIT_START_TIME = "hplus_sit_start_time";
    public static final String PREF_HPLUS_SIT_END_TIME = "hplus_sit_end_time";
    public static final String PREF_HPLUS_UNICODE = "hplus_unicode";
    public static final String PREF_HPLUS_DISPLAY_NOTIFICATION_ICON = "hplus_display_notification_icon";
    public static final String PREF_HPLUS_NOTIFICATION_LINES = "hplus_notification_lines";
 
    public static final Map<Character, byte[]> transliterateMap = new HashMap<Character, byte[]>() {
        {
            //These are missing
            put('ó', new byte[]{(byte) 111});
            put('Ó', new byte[]{(byte) 79});
            put('í', new byte[]{(byte) 105});
            put('Í', new byte[]{(byte) 73});
            put('ú', new byte[]{(byte) 117});
            put('Ú', new byte[]{(byte) 85});
 
            //These mostly belong to the extended ASCII table
            put('Ç', new byte[]{(byte) 128});
            put('ü', new byte[]{(byte) 129});
            put('é', new byte[]{(byte) 130});
            put('â', new byte[]{(byte) 131});
            put('ä', new byte[]{(byte) 132});
            put('à', new byte[]{(byte) 133});
            put('ã', new byte[]{(byte) 134});
            put('ç', new byte[]{(byte) 135});
            put('ê', new byte[]{(byte) 136});
            put('ë', new byte[]{(byte) 137});
            put('Ï', new byte[]{(byte) 139});
            put('è', new byte[]{(byte) 138});
            put('Î', new byte[]{(byte) 140});
            put('Ì', new byte[]{(byte) 141});
            put('Ã', new byte[]{(byte) 142});
            put('Ä', new byte[]{(byte) 143});
            put('É', new byte[]{(byte) 144});
            put('æ', new byte[]{(byte) 145});
            put('Æ', new byte[]{(byte) 146});
            put('ô', new byte[]{(byte) 147});
            put('ö', new byte[]{(byte) 148});
            put('ò', new byte[]{(byte) 149});
            put('û', new byte[]{(byte) 150});
            put('ù', new byte[]{(byte) 151});
            put('ÿ', new byte[]{(byte) 152});
            put('Ö', new byte[]{(byte) 153});
            put('Ü', new byte[]{(byte) 154});
            put('¢', new byte[]{(byte) 155});
            put('£', new byte[]{(byte) 156});
            put('¥', new byte[]{(byte) 157});
            put('ƒ', new byte[]{(byte) 159});
            put('á', new byte[]{(byte) 160});
            put('ñ', new byte[]{(byte) 164});
            put('Ñ', new byte[]{(byte) 165});
            put('ª', new byte[]{(byte) 166});
            put('º', new byte[]{(byte) 167});
            put('¿', new byte[]{(byte) 168});
            put('¬', new byte[]{(byte) 170});
            put('½', new byte[]{(byte) 171});
            put('¼', new byte[]{(byte) 172});
            put('¡', new byte[]{(byte) 173});
            put('«', new byte[]{(byte) 174});
            put('»', new byte[]{(byte) 175});
            put('°', new byte[]{(byte) 0xa1, (byte) 0xe3});
        }
    };
}