Data exchange function
10.1Functional Overview
When an exercise is initiated in the app, the bracelet will calculate the heart rate and calories from the exercise data generated by the app and return it to the app for data exchange; When the wristband starts to exercise, the exercise data generated by the wristband is sent to the App regularly to display the exercise data in real time. The exchange data is based on time as the only reference. During the exchange process, the current activity data needs to be judged by the movement start time. If the time does not correspond, the data cannot be exchanged.。
10.2 Initialize motion data
Parameter Description
- IDODataExchangeModel
Parameters/strong> | illustrate | Remarks |
---|---|---|
day | Day | int |
hour | hour | int |
minute | minute | int |
second | second | int |
sportType | sportType | refer to the IDOSportTypes file description for motion types |
targetType | targetType | int |
targetValue | targetValue | int |
forceStart | Whether to force start | int |
retCode | code | 0:success; 1:The device has entered sports mode failed; 2: Device battery low failure; 3:bracelet is charging |
status | status | 0:all valid, 1:Invalid distance, 2: gps Weak signal |
errorCode | errorCode | 0:success; 1:Device has entered sport mode failed |
step | step | int (Unit: step) |
calories | calories | int (Unit:J) |
distance | distance | int (Unit: m) |
durations | durations | int (Unit: minutes) |
isSave | Is it stored | BOOL |
avgHrValue | average heart rate | int |
maxHrValue | maximum heart rate | int |
burnFatMins | fat burning time | int (minute) |
aerobicMins | Cardio workout time | int (minute) |
limitMins | Maximum workout time | int (minute) |
curHrValue | current heart rate | int |
intervalSecond | heart rate interval | int |
hrValueSerial | serial number | int |
hrValues | Heart rate data | array str json |
Objc:
//Initialize exchange data
IDODataExchangeModel * dataModel = [IDODataExchangeModel new];
//exercise start time
IDOSetTimeInfoBluetoothModel * timeModel = [IDOSetTimeInfoBluetoothModel currentModel];
dataModel.day = timeModel.day;
dataModel.hour = timeModel.hour;
dataModel.minute = timeModel.minute;
dataModel.second = timeModel.second;
//sport type
dataModel.sportType = sportType;
//target type
dataModel.targetType = targetType;
//target value
datModel.targetValue = targetValue;
Swift:
//Initialize exchange data
let dataModel = IDODataExchangeModel.init();
//exercise start time
let timeModel = IDOSetTimeInfoBluetoothModel.current();
dataModel.day = timeModel!.day;
dataModel.hour = timeModel!.hour;
dataModel.minute = timeModel!.minute;
dataModel.second = timeModel!.second;
//sport type
dataModel.sportType = sportType;
//target type
dataModel.targetType = targetType;
//target value
datModel.targetValue = targetValue;
10.3App Initiate data exchange method
- App start the movement
Objc:
//dataModel Global motion data model
[IDOFoundationCommand appStartSportCommand:dataModel
startCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//The movement is launched successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//Movement launch failed
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.appStartSportCommand(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//The movement is launched successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//Movement launch failed
}
};
- App Initiate a motion pause
Objc:
//dataModel Global motion data model
[IDOFoundationCommand appPauseSportCommand:dataModel
pauseCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//Movement paused successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//Movement Pause Failed
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.appPauseSportCommand(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//Movement paused successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//Movement Pause Failed
}
};
- App Initiate exercise recovery
Objc:
//dataModel Global motion data model
[IDOFoundationCommand appRestoreSportCommand:dataModel
appRestoreCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//sports recovery success
}else if (model.retCode == 2) {
//battery is too low
}else {
//sports recovery failure
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.appRestoreSportCommand(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//sports recovery success
}else if model.retCode == 2 {
//battery is too low
}else {
//sports recovery failure
}
};
- App Initiate motion data exchange process
Objc:
//dataModel Global motion data model
[IDOFoundationCommand appIngSportCommand:dataModel
appIngCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//Movement data exchange successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//Movement data exchange failed
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.appIngSportCommand(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//Movement data exchange successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//Movement data exchange failed
}
};
- App Initiate movement to end
Objc:
//dataModel Global motion data model
[IDOFoundationCommand appEndSportCommand:dataModel
appEndcallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//The end of the exercise is successful
}else if (model.retCode == 2) {
//battery is too low
}else {
//Failed to end the exercise
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.appEndSportCommand(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//The end of the exercise is successful
}else if model.retCode == 2 {
//battery is too low
}else {
//Failed to end the exercise
}
};
- App Initiate a movement, the bracelet pauses
Objc:
//dataModel Global motion data model
[IDOFoundationCommand appBlePauseReplyCommand:dataModel
appBlePauseCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//The sports bracelet is suspended successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//The sports bracelet failed to pause
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.appBlePauseReply(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//The sports bracelet is suspended successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//The sports bracelet failed to pause
}
};
- App Start a movement, the bracelet recovers
Objc:
//dataModel Global motion data model
[IDOFoundationCommand appBleRestoreReplyCommand:dataModel
appBleRestoreCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//Sports bracelet recovered successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//Sports bracelet recovery failed
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.appBleRestoreReply(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//Sports bracelet recovered successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//Sports bracelet recovery failed
}
};
- App Start the movement, the bracelet ends
Objc:
//dataModel Global motion data model
[IDOFoundationCommand appBleEndReplyCommand:dataModel
appBleEndCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//Sports bracelet ended successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//Sports bracelet end failed
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.appBleEndReply(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//Sports bracelet ended successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//Sports bracelet end failed
}
};
10.4Ble Initiate data exchange method
- The bracelet starts the movement
Objc:
//dataModel Global motion data model
[IDOFoundationCommand bleStartSportCommand:dataModel
bleStartCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//The bracelet launched the movement and started successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//The bracelet launched the movement and started failed
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.bleStartSportCommand(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//The bracelet launched the movement and started successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//The bracelet launched the movement and started failed
}
};
- The bracelet initiates a motion pause
Objc:
//dataModel Global motion data model
[IDOFoundationCommand blePauseSportCommand:dataModel
blePauseCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//The bracelet initiates the movement and pauses successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//The wristband fails to initiate a motion pause
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.blePauseSportCommand(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//The bracelet initiates the movement and pauses successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//The wristband fails to initiate a motion pause
}
};
- The bracelet initiates exercise recovery
Objc:
//dataModel Global motion data model
[IDOFoundationCommand bleRestoreSportCommand:dataModel
bleRestoreCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//The bracelet launched the exercise and recovered successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//Bracelet failed to initiate exercise recovery
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.bleRestoreSportCommand(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//The bracelet launched the exercise and recovered successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//Bracelet failed to initiate exercise recovery
}
};
- The bracelet initiates movement and stops
Objc:
//dataModel Global motion data model
[IDOFoundationCommand bleEndSportCommand:dataModel
bleEndCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//The bracelet starts the movement and stops successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//The wristband fails to initiate a movement to stop
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.bleEndSportCommand(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//The bracelet starts the movement and stops successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//The wristband fails to initiate a movement to stop
}
};
- The bracelet initiates a movement to exchange data
Objc:
//dataModel Global motion data model
[IDOFoundationCommand bleIngSportCommand:dataModel
bleIngCallback:^(IDODataExchangeModel * _Nullable model, int errorCode) {
if (errorCode == 0 && model.retCode == 0) {
//The bracelet initiates a movement to exchange data successfully
}else if (model.retCode == 2) {
//battery is too low
}else {
//The bracelet initiates a movement and fails to exchange data
}
}];
Swift:
//dataModel Global motion data model
IDOFoundationCommand.bleIngSportCommand(dataModel) { (model, errorCode) in
if errorCode == 0 && model.retCode == 0{
//The bracelet initiates a movement to exchange data successfully
}else if model.retCode == 2 {
//battery is too low
}else {
//The bracelet initiates a movement and fails to exchange data
}
};
10.5 Demo Data exchange function entry