WIP: Alert Notification Profile
This commit is contained in:
parent
ea76e568cc
commit
c2f8037f07
|
@ -0,0 +1,10 @@
|
||||||
|
package nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.alertnotification;
|
||||||
|
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEDeviceSupport;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.AbstractBleProfile;
|
||||||
|
|
||||||
|
public class AlertNotificationProfile<T extends AbstractBTLEDeviceSupport> extends AbstractBleProfile<T> {
|
||||||
|
public AlertNotificationProfile(T support) {
|
||||||
|
super(support);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.alertnotification;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.alert_category_id.xml
|
||||||
|
* https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.alert_category_id_bit_mask.xml
|
||||||
|
*/
|
||||||
|
public enum Category {
|
||||||
|
Simple(0),
|
||||||
|
Email(1),
|
||||||
|
News(2),
|
||||||
|
IncomingCall(3),
|
||||||
|
MissedCall(4),
|
||||||
|
SMS(5),
|
||||||
|
VoiceMail(6),
|
||||||
|
Schedule(7),
|
||||||
|
HighPriorityAlert(8),
|
||||||
|
InstantMessage(9);
|
||||||
|
// 10-250 reserved for future use
|
||||||
|
// 251-255 defined by service specification
|
||||||
|
|
||||||
|
private final int id;
|
||||||
|
|
||||||
|
Category(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int asBit() {
|
||||||
|
return byteNumber() <=7 ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int byteNumber() {
|
||||||
|
return bitNumber() > 7 ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int bitNumber() {
|
||||||
|
// the ID corresponds to the bit for the bitset
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] toBitmask(Category... categories) {
|
||||||
|
byte[] result = new byte[2];
|
||||||
|
|
||||||
|
for (Category category : categories) {
|
||||||
|
result[category.byteNumber()] |= category.asBit();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue