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
/*  Copyright (C) 2024 José Rebelo
 
    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.service.devices.cmfwatchpro;
 
import androidx.annotation.Nullable;
 
public enum CmfCommand {
    ACTIVITY_DATA(0x0056, 0x0001),
    ACTIVITY_FETCH_1(0xffff, 0x8005),
    ACTIVITY_FETCH_2(0xffff, 0x9057),
    ACTIVITY_FETCH_ACK_1(0xffff, 0x0005),
    ACTIVITY_FETCH_ACK_2(0xffff, 0xa057),
    ALARMS_GET(0x0063, 0x0002),
    ALARMS_SET(0x0063, 0x0001),
    APP_NOTIFICATION(0x0065, 0x0001),
    AUTH_NONCE_REPLY(0xffff, 0x004c),
    AUTH_NONCE_REQUEST(0xffff, 0x804b),
    AUTH_PAIR_REPLY(0xffff, 0x0048),
    AUTH_PAIR_REQUEST(0xffff, 0x8047),
    AUTH_PHONE_NAME(0xffff, 0x8049),
    AUTH_WATCH_MAC(0xffff, 0x0049),
    AUTH_FAILED(0xffff, 0xa061),
    AUTHENTICATED_CONFIRM_REPLY(0xffff, 0x0004),
    AUTHENTICATED_CONFIRM_REQUEST(0xffff, 0x804d),
    BATTERY(0x005c, 0x0001),
    CALL_REMINDER(0xffff, 0x9066),
    CONTACTS_GET(0x00d5, 0x0002),
    CONTACTS_SET(0x00d5, 0x0001),
    DATA_CHUNK_REQUEST_AGPS(0xffff, 0xa05f),
    DATA_CHUNK_REQUEST_WATCHFACE(0xffff, 0xa064),
    DATA_CHUNK_WRITE_AGPS(0xffff, 0x905f),
    DATA_CHUNK_WRITE_WATCHFACE(0xffff, 0x9064),
    DATA_TRANSFER_AGPS_FINISH_ACK_1(0xffff, 0xa060),
    DATA_TRANSFER_AGPS_FINISH_ACK_2(0xffff, 0x9060),
    DATA_TRANSFER_AGPS_INIT_REPLY(0xffff, 0xa05e),
    DATA_TRANSFER_AGPS_INIT_REQUEST(0xffff, 0x905e),
    DATA_TRANSFER_WATCHFACE_FINISH_ACK_1(0xffff, 0xa065),
    DATA_TRANSFER_WATCHFACE_FINISH_ACK_2(0xffff, 0x9065),
    DATA_TRANSFER_WATCHFACE_INIT_1_REQUEST(0xffff, 0x8052),
    DATA_TRANSFER_WATCHFACE_INIT_1_REPLY(0xffff, 0x0052),
    DATA_TRANSFER_WATCHFACE_INIT_2_REPLY(0xffff, 0xa063),
    DATA_TRANSFER_WATCHFACE_INIT_2_REQUEST(0xffff, 0x9063),
    DO_NOT_DISTURB(0x0099, 0x0001),
    FACTORY_RESET(0x009a, 0x0001),
    FIND_PHONE(0x005b, 0x0001),
    FIND_WATCH(0x005d, 0x0001),
    FIRMWARE_VERSION_GET(0xffff, 0x8006),
    FIRMWARE_VERSION_RET(0xffff, 0x0006),
    GOALS_SET(0x005e, 0x0001),
    GPS_COORDS(0xffff, 0x906a),
    HEART_MONITORING_ALERTS(0xffff, 0x9059),
    HEART_MONITORING_ENABLED_GET(0x009b, 0x0002),
    HEART_MONITORING_ENABLED_SET(0x009b, 0x0001),
    HEART_RATE_RESTING(0x00da, 0x0001),
    HEART_RATE_MANUAL_AUTO(0x0053, 0x0001),
    HEART_RATE_WORKOUT(0x00e0, 0x0001),
    LANGUAGE_RET(0xffff, 0xa06b),
    LANGUAGE_SET(0xffff, 0x9058),
    MUSIC_BUTTON(0xffff, 0xa05d),
    MUSIC_INFO_ACK(0xffff, 0xa05c),
    MUSIC_INFO_SET(0xffff, 0x905c),
    SERIAL_NUMBER_GET(0x00de, 0x0002),
    SERIAL_NUMBER_RET(0x00de, 0x0001),
    SLEEP_DATA(0x0058, 0x0001),
    SPO2(0x0055, 0x0001),
    SPORTS_SET(0x00dc, 0x0001),
    STANDING_REMINDER_GET(0x0060, 0x0002),
    STANDING_REMINDER_SET(0x0060, 0x0001),
    STRESS(0x009d, 0x0001),
    TIME_FORMAT(0x005f, 0x0001),
    TIME(0xffff, 0x8004),
    TRIGGER_SYNC(0x005c, 0x0002),
    UNIT_LENGTH(0xffff, 0x9067),
    UNIT_TEMPERATURE(0xffff, 0x9068),
    WAKE_ON_WRIST_RAISE(0x0062, 0x0001),
    WATCHFACE(0x009f, 0x0001),
    WATER_REMINDER_GET(0x0061, 0x0002),
    WATER_REMINDER_SET(0x0061, 0x0001),
    WEATHER_SET_1(0xffff, 0x906b),
    WEATHER_SET_2(0x0066, 0x0001),
    WORKOUT_GPS(0xffff, 0xa05a),
    WORKOUT_SUMMARY(0x0057, 0x0001),
    ;
 
    private final int cmd1;
    private final int cmd2;
 
    CmfCommand(final int cmd1, final int cmd2) {
        this.cmd1 = cmd1;
        this.cmd2 = cmd2;
    }
 
    public int getCmd1() {
        return cmd1;
    }
 
    public int getCmd2() {
        return cmd2;
    }
 
    @Nullable
    public static CmfCommand fromCodes(final int cmd1, final int cmd2) {
        for (final CmfCommand cmd : CmfCommand.values()) {
            if (cmd.getCmd1() == cmd1 && cmd.getCmd2() == cmd2) {
                return cmd;
            }
        }
 
        return null;
    }
}