Commit Graph
71 Commits
Author SHA1 Message Date
Vitaliy TominandJosé 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 TominandJosé 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 TominandJosé Rebelo d4c2068aa4 igpsport: Implement Music info for igs800 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 0222175fb5 igpsport: Support media buttons (tested on iGS800) 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo faf0725951 igpsport: Fixes after rebase 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo f1004a663a igpsport: Fix file payload calculation and offsets for file data 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 3e2ca93f49 igpsport: Fix iGS630s typo 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo c0bcee6ba7 igpsport: Add iGS800 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé 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 TominandJosé Rebelo 34581b8041 igpsport: Handle all routes files, update list on deletion 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 046c019bb5 igpsport: Fix double parsing of protobuf packets,fix typo in 02 packets parsing 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé 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 TominandJosé Rebelo 93c1f78371 igpsport: Weather refactoring. Fixed hourly times and icons. 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 56e67e0761 igpsport: add hourly and daily forecast 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo e339ad876a iigpsport: Add igpsport IGS630s to supported devices 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 586f12e67f igpsport: Refactor incoming packets parsing
* support splited packets for protobuf packets
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 63d87b57bf igpsport: Fix User and Units config 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo a8b160c654 igpsport: Hadnle device request for weather
* add DATA_HEADER_SIZE=20
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé 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 TominandJosé 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 TominandJosé 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 TominandJosé Rebelo 2d3d142ebe igpsport: Use only positive integers as file id 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo ea5777f657 igpsport: Get route list as app list 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo ee47234b3b igpsport: Initial weather code and routes list 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 9c27ccbd87 igpsport: Handle route upload complete state 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo d487666624 igpsport: Split IGPSport coordinator add iGS630 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé 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 TominandJosé Rebelo 1d5a59974f igpsport: Fix typo in craftFileData() 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé 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 TominandJosé Rebelo 5964ec9219 igpsport: User data and unit system settings 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé 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 TominandJosé Rebelo 67d0dfcc66 igpsport: Add call and notifications 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé 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 TominandJosé 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 TominandJosé 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 TominandJosé Rebelo 7b4c8d96ba igpsport: Import java igps sport proto code 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo d66f52cd09 WIP: iGPSport: add hard/soft version 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo d70b2a0efe igpsport: Add constants 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 6fe99f9435 igpsport: Add initial classes 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo f157e18fd5 huawei: Add huawei Watch 5 2025-06-07 09:46:23 +02:00
Vitaliy TominandJosé 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 TominandJosé 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 TominandJosé 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 TominandJosé 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 TominandJosé Rebelo 1ce16380b8 huawei: Honor Watch 4 (PRO) 2025-04-04 22:04:54 +00:00
Vitaliy TominandJosé Rebelo 175f4bf60c huawei: Add new gadget Huawei Watch D2 2024-10-14 18:00:49 +00:00
Vitaliy TominandJosé 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 TominandJosé 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 TominandJosé Rebelo ff1d0293fd huawei: Add new gadget Huawei Watch GT5 (Pro) 2024-09-23 15:30:50 +00:00
Vitaliy TominandJosé 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 TominandJosé Rebelo 8ded52a0d1 huawei: Add honor watch gs 3 gadget 2024-08-25 15:34:32 +00:00
Vitaliy TominandJosé 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 TominandJosé 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 TominandJosé 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 TominandJosé 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 TominandJosé 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 TominandJosé 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 TominandJosé Rebelo 8946eff8fa Huawei: Set user info to device
* height
* weight
* age
* year of birth
* gender
2024-05-16 17:52:51 +00:00
Vitaliy TominandJosé 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 TominandJosé 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 TominandJosé 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 TominandDamien 'Psolyca' Gaignon 6167f3f781 [Huawei] Initial AcceptAgreement packet and request 2024-03-21 19:06:03 +01:00
Vitaliy TominandDamien 'Psolyca' Gaignon 014b453693 [Huawei] Add Huawei Watch GT4 support 2024-03-20 13:41:49 +01:00
Vitaliy TominandJosé Rebelo d379b11535 Add HuaweiTLV put for double 2024-02-18 20:54:59 +00:00
Vitaliy TominandJosé Rebelo 287b720350 Send gps and time before forecast 2024-02-18 20:54:59 +00:00