Files
GSFV2/ios/Classes/SwiftFlutterSwiftPlugin.swift
2024-04-10 12:51:20 +05:30

485 lines
17 KiB
Swift

import Flutter
import UIKit
public class SwiftFlutterSwiftPlugin: NSObject, FlutterPlugin {
public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "ic_bluetooth_sdk", binaryMessenger: registrar.messenger())
let instance = SwiftFlutterSwiftPlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
ICSDKManager.channel=channel;
ICSDKManager.sharedInstance.setDelegate()
}
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
var arguments = call.arguments;
var params:[String:Any] = [String:Any]()
var resultMap:[String:String] = [String:String]()
if arguments is Dictionary<String, Any> {
var map:[String:Any] = arguments as! [String : Any]
map.forEach { (key: String, value: Any) in
params[key]=value;
}
}
var jsonObj = params[ICMapKey.JsonValue];
var macObj = params[ICMapKey.Mac];
var enumObj = params[ICMapKey.EnumName];
var intObj = params[ICMapKey.IntValue];
var stringObj = params[ICMapKey.StringValue];
var mac = "";
var cmdValue = "";
var device = ICDevice();
var devList = [ICDevice]()
var filePath = "";
var weight = 0;
if (jsonObj != nil){
cmdValue = (jsonObj as? String)!;
}
if (macObj != nil) {
mac = (macObj as? String)!;
}
if (intObj != nil){
weight = intObj as! Int;
}
switch call.method{
case ICWPublishEvent.InitSDK:
ICSDKManager.sharedInstance.initSdk(config: ICDeviceManagerConfig())
break
case ICWPublishEvent.StartScan:
ICSDKManager.sharedInstance.scanDevice()
break
case ICWPublishEvent.StopScan:
ICSDKManager.sharedInstance.stopScan()
break
case ICWPublishEvent.AddDevice:
ICSDKManager.sharedInstance.addDevice(macAddr: mac) { device, code in
resultMap[ICMapKey.EnumName] = AddDeviceCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.AddDevices:
devList = ICJson.jsonToDeviceArray(jsonString: cmdValue)
ICSDKManager.sharedInstance.addDevices(devices: devList) { device, code in
resultMap[ICMapKey.EnumName] = AddDeviceCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.DeleteDevice:
ICSDKManager.sharedInstance.removeDevice(macAddr: mac) { device, code in
resultMap[ICMapKey.EnumName] = RemoveDeviceCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.DeleteDevices:
devList = ICJson.jsonToDeviceArray(jsonString: cmdValue)
ICSDKManager.sharedInstance.removeDevices(devices: devList) { device, code in
resultMap[ICMapKey.EnumName] = RemoveDeviceCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.OTADevice:
if (stringObj != nil) {
filePath = stringObj as! String
}
let mode = OTAMode.init(rawValue: enumObj as! String)
var sdkOTAMode:ICOTAMode
if(mode == nil){
sdkOTAMode = ICOTAMode.modeAuto
}else{
sdkOTAMode = ICuserConver.getSDKOTAMode(mode:mode!)
}
ICSDKManager.sharedInstance.upgradeDevice(macAddr: mac, path: filePath, icotaMode: sdkOTAMode)
break
case ICWPublishEvent.OTADevices:
devList = ICJson.jsonToDeviceArray(jsonString: cmdValue)
let mode = OTAMode.init(rawValue: enumObj as! String)
var sdkOTAMode:ICOTAMode
if(mode == nil){
sdkOTAMode = ICOTAMode.modeAuto
}else{
sdkOTAMode = ICuserConver.getSDKOTAMode(mode:mode!)
}
ICSDKManager.sharedInstance.upgradeDevices(devices: devList, path: filePath, icotaMode: sdkOTAMode)
break
case ICWPublishEvent.StopOTADevice:
ICSDKManager.sharedInstance.stopUpgradeDevice(macAddr: mac)
break
case ICWPublishEvent.StopOTADevices:
devList = ICJson.jsonToDeviceArray(jsonString: cmdValue)
break
case ICWPublishEvent.ScaleConfigWifi:
let ssidObj = params[ICMapKey.SSID] as! String
let passwordObj = params[ICMapKey.Password] as! String
ICSDKManager.sharedInstance.configWifi(macAddr:mac, ssid: ssidObj, password: passwordObj) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.ScaleUnitSetting:
let unitString = enumObj as! String
let unit = ScaleUnit.init(rawValue: unitString)
var weightUnit:ICWeightUnit
if(unit == nil){
weightUnit = ICWeightUnit.kg
}else {
weightUnit = ICuserConver.getICWeightUnit(type: unit!)
}
ICSDKManager.sharedInstance.setScaleUnit(macAddr:mac, unit: weightUnit ) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.RulerUnitSetting:
let unit = RulerUnit.init(rawValue: enumObj as! String)
var rulerUnit:ICRulerUnit
if(unit == nil){
rulerUnit = ICRulerUnit.CM
}else {
rulerUnit = ICuserConver.getICRulerUnit(type: unit!)
}
ICSDKManager.sharedInstance.setRulerUnit(macAddr:mac, unit: rulerUnit ) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.RulerModeSetting:
let mode = RulerMeasureMode.init(rawValue: enumObj as! String)
var rulerMode:ICRulerMeasureMode
if(mode == nil){
rulerMode = ICRulerMeasureMode.length
}else {
rulerMode = ICuserConver.getRulerMode(type: mode!)
}
ICSDKManager.sharedInstance.setRulerMeasureMode(macAddr:mac, mode: rulerMode ) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.RulerBodyPartSetting:
let part = RulerBodyPartsType.init(rawValue: enumObj as! String)
var rulerPart:ICRulerBodyPartsType
if(part == nil){
rulerPart = ICRulerBodyPartsType.partsTypeBicep
}else {
rulerPart = ICuserConver.getRulerPart(type: part!)
}
ICSDKManager.sharedInstance.setRulerBodyPartsType(macAddr:mac, part: rulerPart ) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.KitchenUnitSetting:
let unit = KitchenScaleUnit.init(rawValue: enumObj as! String)
var kitchenUnit:ICKitchenScaleUnit
if(unit == nil){
kitchenUnit = ICKitchenScaleUnit.G
}else {
kitchenUnit = ICuserConver.getICKitchenUnit(type: unit!)
}
ICSDKManager.sharedInstance.setKitchenScaleUnit(macAddr:mac, unit: kitchenUnit ) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.KitchenPowerOff:
ICSDKManager.sharedInstance.powerOffKitchenScale(macAddr:mac) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.KitchenCMD:
break
case ICWPublishEvent.KitchenTareWeight:
ICSDKManager.sharedInstance.deleteTareWeight(macAddr:mac) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.KitchenFactory:
break
case ICWPublishEvent.SetSkipMode:
let skipMode = SkipMode.init(rawValue: enumObj as! String)
var icSkipMope:ICSkipMode
if(skipMode == nil){
icSkipMope = ICSkipMode.init(rawValue: 0)
}else {
icSkipMope = ICuserConver.getSkipMode(mode:skipMode!)
}
var params:UInt = 0
if(intObj != nil){
params = intObj as! UInt
}
ICSDKManager.sharedInstance.startSkip(macAddr:mac, mode:icSkipMope,param: params ) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.SkipStart:
let skipMode = SkipMode.init(rawValue: enumObj as! String)
var icSkipMope:ICSkipMode
if(skipMode == nil){
icSkipMope = ICSkipMode.init(rawValue: 0)
}else {
icSkipMope = ICuserConver.getSkipMode(mode:skipMode!)
}
var params:UInt = 0
if(intObj != nil){
params = intObj as! UInt
}
ICSDKManager.sharedInstance.startSkip(macAddr:mac, mode:icSkipMope,param: params ) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.SkipStop:
ICSDKManager.sharedInstance.stopSkip(macAddr:mac ) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.SkipLightSetting:
let lightSetting = ICJson.jsonToLightSettingArray(jsonString: cmdValue)
let lightMode = SkipLightMode.init(type: enumObj as! ICSkipLightMode)
let iclightMode = ICuserConver.getSkipLightMode(mode: lightMode)
ICSDKManager.sharedInstance.setSkipLightSetting(macAddr:mac ,lightEffects: lightSetting,mode:iclightMode) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.SkipSoundSetting:
let soundSetting = ICJson.jsonToICSoundSetting(jsonString: cmdValue)
ICSDKManager.sharedInstance.setSkipSoundSetting(macAddr:mac ,config:soundSetting) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.SkipSetWeight:
ICSDKManager.sharedInstance.setWeight(macAddr:mac ,weight:weight) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.KitchenSetNutritionFacts:
let type = KitchenScaleNutritionFactType.init(rawValue: enumObj as! String)
let icKitchenSetNutritionFacts = ICuserConver.getICNutritionFactType(type: type!)
ICSDKManager.sharedInstance.setNutritionFacts(macAddr:mac ,type: icKitchenSetNutritionFacts,value:weight) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.SetServerUrl:
let url = stringObj as! String
ICSDKManager.sharedInstance.setServerUrl(macAddr:mac ,server:url) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.SetOtherParams:
break;
case ICWPublishEvent.SetScaleUIItems:
break;
case ICWPublishEvent.SkipLockSt:
ICSDKManager.sharedInstance.lockStSkip(macAddr:mac) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.QueryStAllNode:
ICSDKManager.sharedInstance.queryStAllNode(macAddr:mac) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.ChangeStName:
let stName = stringObj as! String
ICSDKManager.sharedInstance.changeStName(macAddr:mac, name: stName) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.ChangeStNo:
let stId = params[ICMapKey.DstId] as! UInt
let stNo = params[ICMapKey.StNo] as! UInt
ICSDKManager.sharedInstance.changeStNo(macAddr:mac,dstId:stId,st_no:stNo) { code in
resultMap[ICMapKey.EnumName] = SettingCallBackCode.init(type:code).rawValue
result(resultMap)
}
break
case ICWPublishEvent.SetUserInfo:
let user = ICJson.jsonToICUser(jsonString: cmdValue)
ICSDKManager.sharedInstance.syncUserInfo(userInfo: user)
break
case ICWPublishEvent.SetUserList:
let userList = ICJson.jsonToUserInfoArray(jsonString: cmdValue)
ICSDKManager.sharedInstance.syncUserList(userList: userList)
break
case ICWPublishEvent.CalcBodyFat:
let weightData = ICJson.jsonToICWeight(jsonString:cmdValue);
var userObj = params[ICMapKey.JsonValue2];
if (userObj != nil) {
var userJon = userObj as! String
let user = ICJson.jsonToICUser(jsonString: userJon)
let resultWeight = ICSDKManager.sharedInstance.reCalcBodyFatWithWeightData(weightData: weightData, userInfo:user )
resultMap[ICMapKey.JsonValue] = ICJson.beanToJson(bean: resultWeight)
result(resultMap)
}
break
case ICWPublishEvent.GetLogPath:
let logPath = ICSDKManager.sharedInstance.getLogPath()
resultMap[ICMapKey.StringValue] = logPath
result(resultMap)
break
default:
break
}
}
}