M5Stack textcolor update now working immediately when changing in xdrip
This commit is contained in:
parent
14003dbd8c
commit
7bbeb045c3
|
@ -290,6 +290,19 @@ extension M5StackManager: M5StackManaging {
|
|||
|
||||
extension M5StackManager: M5StackBluetoothDelegate {
|
||||
|
||||
/// m5Stack is asking for an update of all parameters, send them
|
||||
func isAskingForAllParameters(m5Stack: M5Stack) {
|
||||
|
||||
// send all parameters, if successful,then for this m5Stack we can set m5StacksParameterUpdateNeeded to false
|
||||
if sendAllParameters(toM5Stack: m5Stack) {
|
||||
m5StacksParameterUpdateNeeded[m5Stack] = false
|
||||
} else {
|
||||
// failed, so we need to set m5StacksParameterUpdateNeeded to true, so that next time it connects we will send all parameters
|
||||
m5StacksParameterUpdateNeeded[m5Stack] = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// will be called if M5Stack is connected, and authentication was successful, M5StackManager can start sending data like parameter updates or bgreadings
|
||||
func isReadyToReceiveData(m5Stack : M5Stack) {
|
||||
|
||||
|
|
|
@ -142,13 +142,23 @@ final class M5StackBluetoothTransmitter: BluetoothTransmitter, BluetoothTransmit
|
|||
/// true if successfully transmitted to M5Stack, doesn't mean M5Stack did receive it, but chance is high
|
||||
func writeTextColor(textColor: M5StackTextColor) -> Bool {
|
||||
|
||||
guard getConnectionStatus() == CBPeripheralState.connected else {
|
||||
trace("in writeTextColor, not connected ", log: log, type: .info)
|
||||
guard let textColorAsData = textColor.data else {
|
||||
trace("in writeTextColor, failed to create textColor as data ", log: log, type: .error)// looks like a software error
|
||||
return false
|
||||
}
|
||||
|
||||
trace("in writeTextColor, attempting to send", log: log, type: .info)
|
||||
return writeDataToPeripheral(data: textColorAsData, opCode: .writeTextColorTx)
|
||||
|
||||
guard let textColorAsData = textColor.data else {
|
||||
trace("in writeTextColor, failed create textColor as data ", log: log, type: .error)// looks like a software error
|
||||
}
|
||||
|
||||
/// handles common functions when writing data to M5Stack :
|
||||
/// - if no connection returns false
|
||||
/// - calls writeDataToPeripheral(data: Data, type: CBCharacteristicWriteType) and returns the result
|
||||
private func writeDataToPeripheral(data: Data, opCode : M5StackTransmitterOpCodeTx) -> Bool {
|
||||
|
||||
guard getConnectionStatus() == CBPeripheralState.connected else {
|
||||
trace(" not connected ", log: log, type: .info)
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -156,20 +166,20 @@ final class M5StackBluetoothTransmitter: BluetoothTransmitter, BluetoothTransmit
|
|||
var dataToSend = Data()
|
||||
|
||||
// add opcode
|
||||
dataToSend.append(M5StackTransmitterOpCodeTx.writeTextColorTx.rawValue.data)
|
||||
dataToSend.append(opCode.rawValue.data)
|
||||
|
||||
// add textcolor as uint16
|
||||
dataToSend.append(textColorAsData)
|
||||
dataToSend.append(data)
|
||||
|
||||
// send
|
||||
if !writeDataToPeripheral(data: dataToSend, type: .withoutResponse) {
|
||||
trace("in dataToSend, failed to send textcolor", log: log, type: .error)
|
||||
trace(" failed to send", log: log, type: .error)
|
||||
return false
|
||||
} else {
|
||||
trace("successfully written textcolor to M5Stack", log: log, type: .error)
|
||||
trace(" sent", log: log, type: .error)
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// MARK: - BluetoothTransmitterDelegate functions
|
||||
|
@ -335,6 +345,14 @@ final class M5StackBluetoothTransmitter: BluetoothTransmitter, BluetoothTransmit
|
|||
// M5Stack is requesting for password
|
||||
sendLocalTimeAndUTCTimeOffSetInSecondsToM5Stack()
|
||||
|
||||
case .readAllParametersRx:
|
||||
// M5Stack is asking for all parameters
|
||||
|
||||
guard let m5Stack = m5Stack else {return}// would be a software error if this happens
|
||||
|
||||
m5StackBluetoothTransmitterDelegateFixed?.isAskingForAllParameters(m5Stack: m5Stack)
|
||||
m5StackBluetoothTransmitterDelegateVariable?.isAskingForAllParameters(m5Stack: m5Stack)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -74,6 +74,9 @@ enum M5StackTransmitterOpCodeRx: UInt8, CaseIterable {
|
|||
|
||||
/// M5Stack requests timestamp in seconds, local time since 1.1.1970 !!
|
||||
case readTimeStampRx = 0x11
|
||||
|
||||
// M5Stack requests all parameters (textcolor, wifi names and passwords,...), this is usually after an M5Stack restart
|
||||
case readAllParametersRx = 0x16
|
||||
|
||||
}
|
||||
|
||||
|
@ -93,6 +96,8 @@ extension M5StackTransmitterOpCodeRx: CustomStringConvertible {
|
|||
return "readBlePassWordError2Rx"
|
||||
case .readTimeStampRx:
|
||||
return "readTimeStampRx"
|
||||
case .readAllParametersRx:
|
||||
return "readAllParametersRx"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,5 +34,7 @@ protocol M5StackBluetoothDelegate: AnyObject {
|
|||
|
||||
/// will be called if M5Stack is connected, and authentication was successful
|
||||
func isReadyToReceiveData(m5Stack : M5Stack)
|
||||
|
||||
func isAskingForAllParameters(m5Stack: M5Stack)
|
||||
|
||||
}
|
||||
|
|
|
@ -579,6 +579,10 @@ extension M5StackViewController: UITableViewDataSource, UITableViewDelegate {
|
|||
|
||||
extension M5StackViewController: M5StackBluetoothDelegate {
|
||||
|
||||
func isAskingForAllParameters(m5Stack: M5Stack) {
|
||||
// viewcontroller doesn't use this
|
||||
}
|
||||
|
||||
func isReadyToReceiveData(m5Stack: M5Stack) {
|
||||
// viewcontroller doesn't use this
|
||||
}
|
||||
|
|
|
@ -185,6 +185,10 @@ extension M5StacksViewController: UITableViewDataSource, UITableViewDelegate {
|
|||
|
||||
extension M5StacksViewController: M5StackBluetoothDelegate {
|
||||
|
||||
func isAskingForAllParameters(m5Stack: M5Stack) {
|
||||
// viewcontroller doesn't use this
|
||||
}
|
||||
|
||||
func isReadyToReceiveData(m5Stack: M5Stack) {
|
||||
// viewcontroller doesn't use this
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue