Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 1.6.0 #37

Merged
merged 92 commits into from
May 6, 2023
Merged
Changes from 1 commit
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
84a76e9
NS-style blue temp basal icicles fill
bjornoleh Mar 24, 2023
db3a2cd
Revert "NS-style blue temp basal icicles fill"
bjornoleh Mar 24, 2023
1ed8218
Version 1.1.4 (#12)
Jon-b-m Mar 25, 2023
7c438f2
Expand HBT limits. Now 104-180 mg/dl
Jon-b-m Mar 25, 2023
9d51362
Typo and TF fix.
Jon-b-m Mar 25, 2023
b0f141a
In App Icon Chooser (#14)
Jon-b-m Mar 27, 2023
5fec45f
New TT presets support and Meal Presets summation (#17)
Jon-b-m Mar 28, 2023
22435d4
FPU Default now true
Jon-b-m Mar 29, 2023
7008235
Optional Big BG Watch View
Jon-b-m Mar 29, 2023
b852f61
Watch big BG update
Jon-b-m Mar 29, 2023
cdcaa10
Simplify big BG more
Jon-b-m Mar 29, 2023
874c4f1
Don't enact or save 0 minutes Temp Targets
Jon-b-m Mar 29, 2023
e055789
Update Loop framework 3.2
avouspierre Apr 2, 2023
34a4bc2
smooth value - Allows to upload to NS
avouspierre Apr 2, 2023
7b84b9d
Don't display flat arrow in big BG view. Don't display "refreshing" t…
Jon-b-m Mar 30, 2023
5b81e39
Waiters Notepad
Jon-b-m Apr 2, 2023
de4c348
Simplify new TT Slider UX
Jon-b-m Apr 2, 2023
e1d44de
Meal Presets Xcode format
Jon-b-m Apr 2, 2023
f9e975d
xcode auto commit
Jon-b-m Apr 2, 2023
900d365
New icons for complications. From Tom Barrows
Jon-b-m Apr 3, 2023
c7b3823
Missing button in simple add carbs view
Jon-b-m Apr 3, 2023
cb063ec
Simplify UI for slider
Jon-b-m Apr 3, 2023
3f7b039
Replace FAX with iAPS in build workflow, instructions and Fastfile (#15)
bjornoleh Apr 3, 2023
7db5ed8
Bump version
Jon-b-m Apr 3, 2023
aafaa7a
Hide target slider when ratio 1
Jon-b-m Apr 3, 2023
ab7edda
Filter out missing CGM readings from TIR (> 30 minutes)
Jon-b-m Apr 6, 2023
b460b2c
Watch App Colour matching
Jon-b-m Apr 6, 2023
b7035f7
Waiter's Notepad clean up and enumerate
Jon-b-m Apr 7, 2023
b345996
Meal presets. Bug fix and more clean up (still a bit of a mess...)
Jon-b-m Apr 8, 2023
6460178
Profile override adaptive UI.
Jon-b-m Apr 10, 2023
cf4182a
Overrides. Clean up...
Jon-b-m Apr 10, 2023
753617b
add garmin management
avouspierre Apr 14, 2023
9015374
add garmin management
avouspierre Apr 14, 2023
79410ce
Merge branch 'dev-garmin' of https://github.com/Artificial-Pancreas/i…
avouspierre Apr 15, 2023
84c07e2
Info Panel updates.
Jon-b-m Apr 10, 2023
141932e
Hide glucose badge when glucose is 20 minutes (or more) old (optional)
Jon-b-m Apr 15, 2023
5ac12aa
Hide badge commit 2/2
Jon-b-m Apr 15, 2023
fbcba3a
Bug fixes for TTs and more.
Jon-b-m Apr 15, 2023
8fa5976
Bump version
Jon-b-m Apr 15, 2023
f360485
Hide badge commit 3/3. I don't think the last conditional is needed...
Jon-b-m Apr 15, 2023
c9da93b
Run synchronously
Jon-b-m Apr 16, 2023
96f4e55
TT bug fix
Jon-b-m Apr 16, 2023
10c98f8
Reverted logic for TTs.
Jon-b-m Apr 16, 2023
0fbd64d
Revert Hide Glucose Badge
Jon-b-m Apr 17, 2023
8726270
Override bug fix.
Jon-b-m Apr 17, 2023
b05094f
Refactor infopanel.
Jon-b-m Apr 18, 2023
5682d34
Another bug fix fro Overrides...
Jon-b-m Apr 18, 2023
2ef76bd
Correction for Garmin implementation and add delete function
avouspierre Apr 20, 2023
63f00eb
New bug fix for TTs...
Jon-b-m Apr 20, 2023
76b3868
Use BackgroundContext again fro APSManager
Jon-b-m Apr 21, 2023
60fb1d2
Bump version
Jon-b-m Apr 21, 2023
ac1e664
Merge branch 'main' into dev
Jon-b-m Apr 21, 2023
9a34d80
Simplify schemes (#25)
Jon-b-m Apr 7, 2023
df3b623
Rounding of TTs
Jon-b-m Apr 21, 2023
473d996
Merge remote-tracking branch 'origin/dev-loop3.2' into dev
avouspierre Apr 21, 2023
992722e
Merge remote-tracking branch 'refs/remotes/origin/dev'
avouspierre Apr 21, 2023
23c5f76
New recommended bolus % setting.
Jon-b-m Apr 24, 2023
cccc551
create a menu "Watch devices" for Garmin and Apple Watch
avouspierre Apr 24, 2023
94b1781
Allow to configure the content of the third part of the watch faces
avouspierre Apr 25, 2023
988a8e2
Merge branch 'dev-garmin' into dev
avouspierre Apr 25, 2023
9dad694
Just a correction for a merge issue
avouspierre Apr 25, 2023
def7c95
round TT in Data table using 1 fraction digit
Jon-b-m Apr 24, 2023
574242b
Add NFC tag reading capability to TestFlight app from Fastfile (#26)
bjornoleh Apr 26, 2023
1022692
Add Carbs UI simplifications
Jon-b-m Apr 26, 2023
98b7822
Use macos-13 (currently in beta) for all workflows, use Xcode 14.3 fo…
bjornoleh Apr 27, 2023
6fc743e
add (suggested) ISF display option on the Apple Watch.
avouspierre Apr 28, 2023
9c48ed9
update the icon for ISF on Apple Watch
avouspierre Apr 28, 2023
a7e46d2
New stat View (#33)
Jon-b-m Apr 30, 2023
3118d5a
When using mg/dl
Jon-b-m Apr 30, 2023
a7ab6c6
"&" only when using NGSP HbA1c unit
Jon-b-m Apr 30, 2023
2f4d75e
Remove Rule Mark
Jon-b-m Apr 30, 2023
acb4b33
Add a StatConfig in Services section.
Jon-b-m Apr 30, 2023
71eee0c
Some formatting. Far from perfect
Jon-b-m May 1, 2023
386c3a8
New format foro TIR. Test
Jon-b-m May 1, 2023
c0b30f4
Format
Jon-b-m May 1, 2023
3ca0600
More settings for Charts and for Statistics and for Glucose. Change t…
Jon-b-m May 1, 2023
6141a3d
Include Divider()
Jon-b-m May 1, 2023
80e650e
Bug fix for missing key
Jon-b-m May 1, 2023
5be0901
Revert to old defaults
Jon-b-m May 2, 2023
0c017da
Use Short date format when over 6 hours for x-axis
Jon-b-m May 2, 2023
5f61f83
Allow lower than 6 hours for X-axis in main chart, Home View.
Jon-b-m May 2, 2023
56b7d0e
Allows to use the IOS Simulator
avouspierre May 3, 2023
e105fb5
Override Profile Target Glucose
Jon-b-m May 3, 2023
5852dcb
Allow Override of target glucose in profiles override
Jon-b-m May 5, 2023
86b64ff
Merge remote-tracking branch 'refs/remotes/public_iaps/dev'
Jon-b-m May 5, 2023
5cfea9e
Merge fix. UI string.
Jon-b-m May 5, 2023
8ca83e8
Fix for the optional stat json upload TIR.
Jon-b-m May 5, 2023
058eb49
remove test run.
Jon-b-m May 5, 2023
0de3ee7
First implementation of siri shortcuts
avouspierre May 6, 2023
b60e175
Hide OmniKitPacketParser in Target Schemes
Jon-b-m May 6, 2023
075667c
Bump version
Jon-b-m May 6, 2023
56dc444
Merge branch 'main' into dev
Jon-b-m May 6, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add garmin management
add garmin management in iAPS. Requires to use data or watch faces
  • Loading branch information
avouspierre committed Apr 14, 2023
commit 753617b81efdc294bc0c437506d1ff639a516adf
Binary file not shown.
237 changes: 237 additions & 0 deletions Dependencies/ios-armv7_arm64/ConnectIQ.framework/Headers/ConnectIQ.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
//
// ConnectIQ.h
// ConnectIQ
//
// Copyright (c) 2014 Garmin. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "IQConstants.h"
#import "IQDevice.h"
#import "IQApp.h"

// --------------------------------------------------------------------------------
#pragma mark - PUBLIC TYPES
// --------------------------------------------------------------------------------

/// @brief SendMessage progress callback block
///
/// @param sentBytes The number of bytes that have been successfully transferred
/// to the device so far for this connection.
/// @param totalBytes The total number of bytes to transfer for this connection.
typedef void (^IQSendMessageProgress)(uint32_t sentBytes, uint32_t totalBytes);

/// @brief SendMessage completion callback block
///
/// @param result The result of the SendMessage operation.
typedef void (^IQSendMessageCompletion)(IQSendMessageResult result);

/// @brief Conforming to the IQUIOverrideDelegate protocol indicates that an
/// object handles one or more events triggered by the ConnectIQ SDK that
/// require user input.
@protocol IQUIOverrideDelegate <NSObject>
@optional
/// @brief Called by the ConnectIQ SDK when an action has been requested that
/// requires Garmin Connect Mobile to be installed.
///
/// The receiver should choose whether or not to launch the Apple App
/// Store page for GCM, ideally by presenting the user with a choice.
///
/// If the receiver of this message decides to install GCM, it must call
/// showAppStoreForConnectMobile.
- (void)needsToInstallConnectMobile;
@end

/// @brief Conforming to the IQDeviceEventDelegate protocol indicates that an
/// object handles ConnectIQ device status events.
@protocol IQDeviceEventDelegate <NSObject>
@optional
/// @brief Called by the ConnectIQ SDK when an IQDevice's connection status has
/// changed.
///
/// @param device The IQDevice whose status changed.
/// @param status The new status of the device.
- (void)deviceStatusChanged:(IQDevice *)device status:(IQDeviceStatus)status;
@end

/// @brief Conforming to the IQAppMessageDelegate protocol indicates that an
/// object handles messages from ConnectIQ apps on compatible devices.
@protocol IQAppMessageDelegate <NSObject>
@optional
/// @brief Called by the ConnectIQ SDK when a message is received from a device.
///
/// @param message The message that was received.
/// @param app The device app that sent the message.
- (void)receivedMessage:(id)message fromApp:(IQApp *)app;
@end

// --------------------------------------------------------------------------------
#pragma mark - CLASS DEFINITION
// --------------------------------------------------------------------------------

/// @brief The root of the ConnectIQ SDK API.
@interface ConnectIQ : NSObject

+ (instancetype)new NS_UNAVAILABLE;
- (instancetype)init NS_UNAVAILABLE;

// --------------------------------------------------------------------------------
#pragma mark - SINGLETON ACCESS
// --------------------------------------------------------------------------------

/// @brief Exposes the single static instance of the ConnectIQ class.
///
/// @return The single status instance of the ConnectIQ class.
+ (ConnectIQ *)sharedInstance;

// --------------------------------------------------------------------------------
#pragma mark - INITIALIZATION
// --------------------------------------------------------------------------------

/// @brief Initializes the ConnectIQ SDK with startup parameters necessary for
/// its operation.
///
/// @param urlScheme The URL scheme for this companion app. When Garmin Connect
/// Mobile is launched, it will return to the companion app by
/// launching a URL with this scheme.
/// @param delegate The delegate that the SDK will use for notifying the
/// companion app about events that require user input. If this
/// is nil, the SDK's default UI will be used.
- (void)initializeWithUrlScheme:(NSString *)urlScheme uiOverrideDelegate:(id<IQUIOverrideDelegate>)delegate;

// --------------------------------------------------------------------------------
#pragma mark - EXTERNAL LAUNCHING
// --------------------------------------------------------------------------------

/// @brief Launches the Apple App Store page for the Garmin Connect Mobile app.
/// The companion app should only call this in response to a
/// needsToInstallConnectMobile event that gets triggered on the
/// IQUIOverrideDelegate.
- (void)showAppStoreForConnectMobile;

/// @brief Launches Garmin Connect Mobile for the purpose of retrieving a list of
/// ConnectIQ-compatible devices.
///
/// Once the user has chosen which ConnectIQ devices to share with the
/// companion app, GCM will return those devices to the companion app by
/// opening a URL with the scheme registered in
/// initializeWithUrlScheme:uiOverrideDelegate:.
///
/// The companion app should handle this URL by passing it in to the
/// parseDeviceSelectionResponseFromURL: method to get the list of devices
/// that the user permitted the companion app to communicate with.
- (void)showConnectIQDeviceSelection;

/// @brief Parses a URL opened from Garmin Connect Mobile into a list of devices.
///
/// @param url The URL to parse.
///
/// @return An array of IQDevice objects representing the ConnectIQ-compatible
/// devices that the user allowed GCM to share with the companion app.
///
/// @seealso showConnectIQDeviceSelection
- (NSArray *)parseDeviceSelectionResponseFromURL:(NSURL *)url;

/// @brief Launches Garmin Connect Mobile and shows the ConnectIQ app store page
/// for the given app.
///
/// The companion app should call this if the user would like to manage
/// the app on the device, such as to install, upgrade, uninstall, or
/// modify settings.
///
/// @param app The app to show the ConnectIQ app store page for.
- (void)showConnectIQStoreForApp:(IQApp *)app;

// --------------------------------------------------------------------------------
#pragma mark - DEVICE MANAGEMENT
// --------------------------------------------------------------------------------

/// @brief Registers an object as a listener for ConnectIQ device status events.
///
/// A device may have multiple device event listeners if this method is
/// called more than once.
///
/// @param device A device to listen for status events from.
/// @param delegate The listener which will receive status events for this device.
- (void)registerForDeviceEvents:(IQDevice *)device delegate:(id<IQDeviceEventDelegate>)delegate;

/// @brief Unregisters a listener for a specific device.
///
/// @param device The device to unregister the listener for.
/// @param delegate The listener to remove from the device.
- (void)unregisterForDeviceEvents:(IQDevice *)device delegate:(id<IQDeviceEventDelegate>)delegate;

/// @brief Unregisters the specified listener from all devices for which it had
/// previously been registered.
///
/// @param delegate The listener to unregister.
- (void)unregisterForAllDeviceEvents:(id<IQDeviceEventDelegate>)delegate;

/// @brief Gets the current connection status of a device.
///
/// The device must have been registered for event notifications by
/// calling registerForDeviceEvents:delegate: or this method will return
/// IQDeviceStatus_InvalidDevice.
///
/// @param device The device to get the status for.
///
/// @return The device's current connection status.
- (IQDeviceStatus)getDeviceStatus:(IQDevice *)device;

// --------------------------------------------------------------------------------
#pragma mark - APP MANAGEMENT
// --------------------------------------------------------------------------------

/// @brief Begins getting the status of an app on a device. This method returns
/// immediately.
///
/// @param app The IQApp to get the status for.
/// @param completion The completion block that will be triggered when the device
/// status operation is complete.
- (void)getAppStatus:(IQApp *)app completion:(void(^)(IQAppStatus *appStatus))completion;

/// @brief Registers an object as a listener for ConnectIQ messages from an app
/// on a device.
///
/// An app may have multiple message listeners if this method is called
/// more than once.
///
/// @param app The app to listen for messages from.
/// @param delegate The listener which will receive messages for this app.
- (void)registerForAppMessages:(IQApp *)app delegate:(id<IQAppMessageDelegate>)delegate;

/// @brief Unregisters a listener for a specific app.
///
/// @param app The app to unregister a listener for.
/// @param delegate The listener to remove from the app.
- (void)unregisterForAppMessages:(IQApp *)app delegate:(id<IQAppMessageDelegate>)delegate;

/// @brief Unregisters all previously registered apps for a specific listener.
///
/// @param delegate The listener to unregister.
- (void)unregisterForAllAppMessages:(id<IQAppMessageDelegate>)delegate;

/// @brief Begins sending a message to an app. This method returns immediately.
///
/// @param message The message to send to the app. This message must be one of
/// the following types: NSString, NSNumber, NSNull, NSArray,
/// or NSDictionary. Arrays and dictionaries may be nested.
/// @param app The app to send the message to.
/// @param progress A progress block that will be triggered periodically
/// throughout the transfer. This is guaranteed to be triggered
/// at least once.
/// @param completion A completion block that will be triggered when the send
/// message operation is complete.
- (void)sendMessage:(id)message toApp:(IQApp *)app progress:(IQSendMessageProgress)progress completion:(IQSendMessageCompletion)completion;

/// @brief Sends an open app request message request to the device. This method returns immediately.
///
/// @param app The app to open.
/// @param completion A completion block that will be triggered when the send
/// message operation is complete.
- (void)openAppRequest:(IQApp *)app completion:(IQSendMessageCompletion)completion;

// TODO *** Holding off on documenting this until this method actually works.
- (void)sendImage:(NSData *)bitmap toApp:(IQApp *)app progress:(IQSendMessageProgress)progress completion:(IQSendMessageCompletion)completion;

@end
34 changes: 34 additions & 0 deletions Dependencies/ios-armv7_arm64/ConnectIQ.framework/Headers/IQApp.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// IQApp.h
// ConnectIQ
//
// Copyright (c) 2014 Garmin. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "IQDevice.h"
#import "IQAppStatus.h"

/// @brief Represents an instance of a ConnectIQ app that is installed on a
/// Garmin device.
@interface IQApp : NSObject <NSSecureCoding>

/// @brief The unique identifier for this app.
@property (nonatomic, readonly) NSUUID *uuid;

/// @brief The unique identifier for this app in the store.
@property (nonatomic, readonly) NSUUID *storeUuid;

/// @brief The device that this app is installed on.
@property (nonatomic, readonly) IQDevice *device;

/// @brief Creates a new app instance.
///
/// @param uuid The UUID of the app to create.
/// @param storeUuid The store UUID of the app to create.
/// @param device The device the app to create is installed on.
///
/// @return A new IQApp instance with the appropriate values set.
+ (IQApp *)appWithUUID:(NSUUID *)uuid storeUuid:(NSUUID *)storeUuid device:(IQDevice *)device;

@end
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
//
// IQAppStatus.h
// ConnectIQ
//
// Copyright (c) 2014 Garmin. All rights reserved.
//

#import <Foundation/Foundation.h>

/// @brief Represents the current status of an app on a Garmin device.
@interface IQAppStatus : NSObject

/// @brief YES if the app is installed on the device, NO if it isn't.
@property (nonatomic, readonly) BOOL isInstalled;

/// @brief The version of the app that is currently installed on the device. If
/// the app is not installed, this value is unused.
@property (nonatomic, readonly) uint16_t version;

@end
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
//
// IQConstants.h
// ConnectIQ
//
// Copyright (c) 2014 Garmin. All rights reserved.
//

#import <Foundation/Foundation.h>

/// @brief The current version of the ConnectIQ SDK.
extern int const IQSDKVersion;

/// @brief The bundle identifier for the Garmin Connect Mobile app.
extern NSString * const IQGCMBundle;

/// @brief The result of a SendMessage operation
typedef NS_ENUM(NSInteger, IQSendMessageResult){
///! @brief The message was sent successfully.
IQSendMessageResult_Success,

/// @brief The message failed to send due to an unknown error.
IQSendMessageResult_Failure_Unknown,

/// @brief The message failed to send. There was an error within the SDK or
/// on the device.
IQSendMessageResult_Failure_InternalError,

/// @brief The message failed to send. The device is not available right now.
IQSendMessageResult_Failure_DeviceNotAvailable,

/// @brief The message failed to send. The app is not installed on the
/// device.
IQSendMessageResult_Failure_AppNotFound,

/// @brief The message failed to send. The device is busy and cannot receive
/// the message right now.
IQSendMessageResult_Failure_DeviceIsBusy,

/// @brief The message failed to send. The message contained an unsupported
/// type.
IQSendMessageResult_Failure_UnsupportedType,

/// @brief The message failed to send. The device does not have enough memory
/// to receive the message.
IQSendMessageResult_Failure_InsufficientMemory,

/// @brief The message failed to send. The connection timed out while sending
/// the message.
IQSendMessageResult_Failure_Timeout,

/// @brief The message failed to send and was retried, but could not complete
/// after a number of tries.
IQSendMessageResult_Failure_MaxRetries,

/// @brief The message was received by the device but it chose not to display
/// a message prompt, ignoring the message.
IQSendMessageResult_Failure_PromptNotDisplayed,

/// @brief The message was received by the device but the app to open
/// was already running on the device.
IQSendMessageResult_Failure_AppAlreadyRunning,
};
NSString *NSStringFromSendMessageResult(IQSendMessageResult value);
Loading