Vitaliy Tomin and José Rebelo
4f56b6569b
igpsport: Copy Fitimporter from Garmin
...
* remove garmin specific samples like stress, hrv and sleep, use only standard fit records
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
dacf0471ef
igpsport: Swithc to GarminTimeUtils time converting method, set device busy
...
* use garmin time epoch as it is used by all fit files
* use Locale.ROOT for filename generation
* set/unset device busy while downloading fit files
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
d4c2068aa4
igpsport: Implement Music info for igs800
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
0222175fb5
igpsport: Support media buttons (tested on iGS800)
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
faf0725951
igpsport: Fixes after rebase
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
f1004a663a
igpsport: Fix file payload calculation and offsets for file data
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
3e2ca93f49
igpsport: Fix iGS630s typo
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
c0bcee6ba7
igpsport: Add iGS800
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
39cf720fdd
igpsport: Use custom time epoch for fit files times
...
* turns out cycling_data_msg has timestamps with custom epoch,
adding this epoch to get standard timestamp.
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
34581b8041
igpsport: Handle all routes files, update list on deletion
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
046c019bb5
igpsport: Fix double parsing of protobuf packets,fix typo in 02 packets parsing
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
a404586ef5
igpsport: Partial routes list fix
...
* now handles only single request with up to fileListSupportNumMax
files, need to iterate it to handle remaining files
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
93c1f78371
igpsport: Weather refactoring. Fixed hourly times and icons.
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
56e67e0761
igpsport: add hourly and daily forecast
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
e339ad876a
iigpsport: Add igpsport IGS630s to supported devices
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
586f12e67f
igpsport: Refactor incoming packets parsing
...
* support splited packets for protobuf packets
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
63d87b57bf
igpsport: Fix User and Units config
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
a8b160c654
igpsport: Hadnle device request for weather
...
* add DATA_HEADER_SIZE=20
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
b193da7349
igpsport: download workouts
...
* now able to save all fit files from computed to phone
/sdcard/Android//data/nodomain.freeyourgadget.gadgetbridge/files/
* TODO parse fit files to workouts
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
f6aa398316
igpsport: Get SN from device
...
* need to find way to use it as idintifier in DB since it is constant for each device,
but MAC changes on unpair
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
b0308d01b7
igpsport: Refactor routes handling
...
* move routes related code to IGPSportRoutesManager
* implement activate/delete for routes
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
2d3d142ebe
igpsport: Use only positive integers as file id
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
ea5777f657
igpsport: Get route list as app list
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
ee47234b3b
igpsport: Initial weather code and routes list
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
9c27ccbd87
igpsport: Handle route upload complete state
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
d487666624
igpsport: Split IGPSport coordinator add iGS630
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
601eca82ef
igpsport: Install route files as apps
...
* works with cnx, gpx, fit, tcx and xml roue files
* only extension checked, no real checks for valid file
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
1d5a59974f
igpsport: Fix typo in craftFileData()
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
0e55221684
igpsport: craft file data method
...
* used to send route plan, firmware, agps, language pack
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
5964ec9219
igpsport: User data and unit system settings
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
91facdf018
igpsport: Fix parsing payload size, add fetch activity hardcoded
...
* trying to get activity file, now hardcoded timestamp from my computer
* it is sending data to GB, need to merge it and parse as FIT file
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
67d0dfcc66
igpsport: Add call and notifications
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
a42b4e1944
igpsport: Get battery level from factory command
...
* basic deserialization implementation
* battery level set
* fw2 version set to bootloader version
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
30dd491dfc
igpsport: Fix TX/RX characteristics mess, add firmware request
...
* gadget returns proper response on 3 test requests
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
5202311dce
igpssport: Add couple of test packets serialization
...
* serialized data matches to hci logs from native app,
but there is no response from device on thse packets sent
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
7b4c8d96ba
igpsport: Import java igps sport proto code
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
d66f52cd09
WIP: iGPSport: add hard/soft version
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
d70b2a0efe
igpsport: Add constants
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
6fe99f9435
igpsport: Add initial classes
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
f157e18fd5
huawei: Add huawei Watch 5
2025-06-07 09:46:23 +02:00
Vitaliy Tomin and José Rebelo
4b2c1089a9
huawei: Honor Watch 4 workaround for GetNotificationConstraintsRequest
...
* Watch stop responging after getting this request, so disable it for now
2025-04-04 22:04:54 +00:00
Vitaliy Tomin and José Rebelo
f354941bb6
huawei: Do not apply encryption to FileUpload on non encrypted devices
...
* Do not encrypt file payload on devices where
paramsProvider.areTransactionsCrypted() == false because there is not
even valid key avaliable. Related devices is older Honor (Watch Magic 2,
GS Pro, GS3) and newer Honor (Watch 4, Watch 4 Pro)
2025-04-04 22:04:54 +00:00
Vitaliy Tomin and José Rebelo
ce5881df12
huawei: Support Honor resolutions, handle empty tags
...
* Do not crash if any descrition.xml tag is missing, just replace
with empty string. Honor descriptions seems missing -cn tags.
* handle com.honor.watchface watchface name
2025-04-04 22:04:54 +00:00
Vitaliy Tomin and José Rebelo
2538a6e9d3
huawei: Handle version 4 digest for Honor Watch 4
...
* on huawei devices authVersion == 4 means using hichain,
but honor still using simple challenge response and actually
using V1 digest key
2025-04-04 22:04:54 +00:00
Vitaliy Tomin and José Rebelo
1ce16380b8
huawei: Honor Watch 4 (PRO)
2025-04-04 22:04:54 +00:00
Vitaliy Tomin and José Rebelo
175f4bf60c
huawei: Add new gadget Huawei Watch D2
2024-10-14 18:00:49 +00:00
Vitaliy Tomin and José Rebelo
feb7b36b3e
Huawei: Add Huawei Watch GT Cyber gadget
2024-10-04 19:02:54 +00:00
Vitaliy Tomin
3c6f1191b5
huawei: Add gadget variant Huawei Watch GT3 SE
...
* added to GT3Coordinator
2024-09-24 14:06:41 +08:00
Vitaliy Tomin and José Rebelo
820a5b9800
huawei: Add non pro version of Watch 4
...
* it was missing in current watch4pro coordinator
2024-09-23 15:32:24 +00:00
Vitaliy Tomin and José Rebelo
ff1d0293fd
huawei: Add new gadget Huawei Watch GT5 (Pro)
2024-09-23 15:30:50 +00:00
Vitaliy Tomin and José Rebelo
4e7b83bebf
huawei: Make more tags optional for app managemnet
...
* solves this crash on Honmor GS Pro:
09:45:29.115 [Read Thread for HONOR Watch GS Pro-BD1] DEBUG n.f.g.s.b.BtBRQueue - Received 26 bytes: 5A0015002A068110820E0301260404000000030503322E302B86
09:45:29.118 [Read Thread for HONOR Watch GS Pro-BD1] DEBUG n.f.g.d.h.HuaweiTLV - Parsed TLV: {tag: 81 - Value: 820E0301260404000000030503322E30}
09:45:29.120 [Read Thread for HONOR Watch GS Pro-BD1] DEBUG n.f.g.s.d.h.ResponseManager - Service: 2a, command: 6, handled by: class nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetAppInfoParams
09:45:29.122 [Read Thread for HONOR Watch GS Pro-BD1] DEBUG n.f.g.d.h.HuaweiTLV - Parsed TLV: {tag: 82 - Value: 0301260404000000030503322E30}
09:45:29.124 [Read Thread for HONOR Watch GS Pro-BD1] DEBUG n.f.g.d.h.HuaweiTLV - Parsed TLV: {tag: 3 - Value: 26} - {tag: 4 - Value: 00000003} - {tag: 5 - Value: 322E30}
09:45:29.126 [Read Thread for HONOR Watch GS Pro-BD1] ERROR n.f.g.s.d.h.r.Request - Parse TLV exception
nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiPacket$MissingTagException: Missing tag: 6
at nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiTLV.getBytes(HuaweiTLV.java:219)
at nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiTLV.getString(HuaweiTLV.java:239)
at nodomain.freeyourgadget.gadgetbridge.devices.huawei.packets.App$AppInfoParams$Response.parseTlv(App.java:129)
at nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.Request.handleResponse(Request.java:243)
at nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.ResponseManager.handleData(ResponseManager.java:131)
at nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiSupportProvider.onSocketRead(HuaweiSupportProvider.java:880)
at nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiBRSupport.onSocketRead(HuaweiBRSupport.java:74)
at nodomain.freeyourgadget.gadgetbridge.service.btbr.BtBRQueue$1.run(BtBRQueue.java:87)
2024-09-12 22:49:11 +00:00
Vitaliy Tomin
02286d2c2c
huawei: Add honor watch gs pro gadget
2024-09-12 12:36:11 +08:00
Vitaliy Tomin and José Rebelo
8ded52a0d1
huawei: Add honor watch gs 3 gadget
2024-08-25 15:34:32 +00:00
Vitaliy Tomin and José Rebelo
1940db7204
huawei: Handle some watchface install errors
...
* handle too many watchface installed
* handle insufficient space
* sort related code while at it
2024-08-17 08:30:46 +00:00
Vitaliy Tomin and José Rebelo
bf6d0d0f83
[Huawei] Add Huawei Watch GT Runner gadget
...
* created new gadget classes
* make tag 0x01 in TimeRequest response optional. There is no
such tag on GT Runner, at least on HarmonyOS 2 firmware.
2024-08-03 14:49:05 +00:00
Vitaliy Tomin and José Rebelo
c380cf98bb
Huawei: Fix Watch 3 music control
...
* it using integer button fields
* it has button code 100 means exit from music
control screen, no need to poll music info on this code
2024-07-27 11:48:33 +00:00
Vitaliy Tomin
5a6a39d059
Huawei: Fix notification constraints for Watch 3
...
* Watch 3 reports some values as integer, while internal buffer
now uses short values. Actually all values here fits in short
so just cut leading zeros now. Addin exception for case cutted
values was non zeros
2024-07-25 21:43:34 +08:00
Vitaliy Tomin
a994603389
[Huawei] Add hichainlite related parsing code
2024-07-25 21:43:25 +08:00
Vitaliy Tomin
676678defb
[huawei] Hacks for HiChainLite (Watch 3)
...
* use authMode instead of deviceSupportType
* set authMode to 4 for hichain 3 and set 2 for any other hichain
* use full HuaweiCrypto() constructor
2024-07-25 21:42:14 +08:00
Vitaliy Tomin
ae1cb4e893
[Huawei] Add Huawei Watch 3 gadget
2024-07-25 21:25:52 +08:00
Vitaliy Tomin and José Rebelo
f4322eee7f
Huawei: FileUpload refactoring, fixes Watch 3/4
...
* replaced fileType with fileId which recived on incoming data
in 28 03 FileHashSend.Response
* width/height in WatchfaceDeviceParams could be int or short
(int is present on Watch 3, short is all other tested devices)
* use in 27 05 WatchfaceConfirm.Request data recieved in previous
WatchfaceConfirm.Response
2024-07-24 19:03:41 +00:00
Vitaliy Tomin and José Rebelo
5c5c0a48d4
Huawei: Improve watchface install support
...
* there are newer watchface files, which need to unpack inner
com.huawei.watchface as zip file and install watchface.bin
* also some description.xml has BOM which cause issue parsing as xml
2024-07-24 19:03:41 +00:00
Vitaliy Tomin and José Rebelo
2e7b7b3287
huawei: Add newer devices screen resolutions
...
* Added HWHD11, HWHD12 and HWHD13 screens
* Sorted resolutions list
* Add check for non existed screen strings.
2024-07-11 16:47:15 +00:00
Vitaliy Tomin and José Rebelo
8946eff8fa
Huawei: Set user info to device
...
* height
* weight
* age
* year of birth
* gender
2024-05-16 17:52:51 +00:00
Vitaliy Tomin and José Rebelo
4d0d9e298e
huawei: feature: File upload and watchface management ( #3671 )
...
Co-authored-by: Vitaliy Tomin <highwaystar.ru@gmail.com >
Co-committed-by: Vitaliy Tomin <highwaystar.ru@gmail.com >
2024-04-27 21:37:15 +00:00
Vitaliy Tomin and José Rebelo
67cf9b2f00
huawei: Add huawei account support ( #3721 )
...
* this feature allows to pair HarmonyOS devices without factory reset to
GB and Huawei Health.
* huawei account has form of 17 digit string and could be retrived from
logcat filtering by huid=
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3721
Co-authored-by: Vitaliy Tomin <highwaystar.ru@gmail.com >
Co-committed-by: Vitaliy Tomin <highwaystar.ru@gmail.com >
2024-04-25 12:19:00 +00:00
Vitaliy Tomin and José Rebelo
4986fdd0ea
Huawei: Use generic notification type instead of wechat
...
* this match stock application Huawei Health
* devices show proper applications icons if it exist in firmware,
when type set to Wechat only wechat icon used
* sender name was not shown with wechat type
2024-03-31 07:04:25 +00:00
Vitaliy Tomin and Damien 'Psolyca' Gaignon
6167f3f781
[Huawei] Initial AcceptAgreement packet and request
2024-03-21 19:06:03 +01:00
Vitaliy Tomin and Damien 'Psolyca' Gaignon
014b453693
[Huawei] Add Huawei Watch GT4 support
2024-03-20 13:41:49 +01:00
Vitaliy Tomin and José Rebelo
d379b11535
Add HuaweiTLV put for double
2024-02-18 20:54:59 +00:00
Vitaliy Tomin and José Rebelo
287b720350
Send gps and time before forecast
2024-02-18 20:54:59 +00:00