Ejemplo n.º 1
0
    public static void ProcessReceiveData(byte[] data)
    {
        BLEDebug.LogInfo("BLEAction Processing Received Data");
        // Ignore and log invalid data
        if (!BLEProtocol.ValidateData(data))
        {
            BLEDebug.LogWarning("Warning: Receive Data could not be validated");
            return;
        }
        byte responseCode = BLEProtocol.GetResponseCode(data);

        BLEDebug.LogInfo($"Processing Response Code {responseCode}");
        switch (responseCode)
        {
        case BLEProtocol.ResponseCode.Acknowledge:
            Acknowledge();
            break;

        case BLEProtocol.ResponseCode.DeviceInformationResponse:
            ReceiveDeviceInformation(data);
            break;

        case BLEProtocol.ResponseCode.ErrorLogResponse:
            ReceiveErrorLog(data);
            break;

        case BLEProtocol.ResponseCode.ResistanceLevelRangeResponse:
            ReceiveResistanceLevelRange(data);
            break;

        case BLEProtocol.ResponseCode.ResistanceLevelResponse:
        case BLEProtocol.ResponseCode.ResistanceLevelNotification:
            ReceiveResistanceLevel(data);
            break;

        case BLEProtocol.ResponseCode.WorkoutControlStateResponse:
        case BLEProtocol.ResponseCode.WorkoutControlStateNotification:
            ReceiveWorkoutControlState(data);
            break;

        case BLEProtocol.ResponseCode.WorkoutStatusNotification:
            ReceiveWorkoutStatus(data);
            break;

        default:
            BLEDebug.LogError("Error: Invalid ResponseCode received from native plugin");
            return;
        }
    }
Ejemplo n.º 2
0
    public static void Set(byte actionCode, int value)
    {
        BLEDebug.LogInfo("BLEAction Set");
        switch (actionCode)
        {
        case BLEProtocol.ActionCode.SetWorkoutControlState:
        case BLEProtocol.ActionCode.SetResistanceLevel:
            BLEPlugin.Instance.SendPluginMessage(
                BLEProtocol.ConvertBytesToString(
                    BLEProtocol.PrepareSetCommandBytes(actionCode, value)
                    )
                );
            break;

        default:
            BLEDebug.LogError("Error: Attempting to send invalid Set ActionCode");
            break;
        }
    }
Ejemplo n.º 3
0
    public static void Get(byte actionCode)
    {
        BLEDebug.LogInfo("BLEAction Get");
        switch (actionCode)
        {
        case BLEProtocol.ActionCode.Acknowledge:
        case BLEProtocol.ActionCode.GetDeviceInformation:
        case BLEProtocol.ActionCode.GetErrorLog:
        case BLEProtocol.ActionCode.GetResistanceLevelRange:
        case BLEProtocol.ActionCode.GetWorkoutControlState:
        case BLEProtocol.ActionCode.GetResistanceLevel:
            BLEPlugin.Instance.SendPluginMessage(
                BLEProtocol.ConvertBytesToString(
                    BLEProtocol.PrepareGetCommandBytes(actionCode)
                    )
                );
            break;

        default:
            BLEDebug.LogError("Error: Attempting to send invalid Get ActionCode");
            break;
        }
    }
Ejemplo n.º 4
0
    public void ReceiveUnityMessage(string message)
    {
        byte[] messageData = BLEProtocol.ConvertStringToBytes(message);
        if (!BLEProtocol.ValidateData(messageData))
        {
            BLEDebug.LogError("Received Message Failed Validation - Ignoring");
        }
        byte actionCode = BLEProtocol.GetActionCode(messageData);

        switch (actionCode)
        {
        case BLEProtocol.ActionCode.Acknowledge:
            // Factory doesn't use this so we shouldn't be using it either
            BLEDebug.LogWarning("Acknowledge Received");
            break;

        case BLEProtocol.ActionCode.GetDeviceInformation:
            BLEPluginInstance.SendMessage("ReceivePluginMessage",
                                          BLEProtocol.ConvertBytesToString(
                                              BLEResponse.PrepareDeviceInformationBytes(
                                                  modelID,
                                                  hardwareMajor,
                                                  hardwareMinor,
                                                  firmwareMajor,
                                                  firmwareMinor,
                                                  firmwarePatch
                                                  )
                                              )
                                          );
            break;

        case BLEProtocol.ActionCode.GetErrorLog:
            // TODO - Low Priority
            break;

        case BLEProtocol.ActionCode.GetResistanceLevelRange:
            BLEPluginInstance.SendMessage("ReceivePluginMessage",
                                          BLEProtocol.ConvertBytesToString(
                                              BLEResponse.PrepareResistanceLevelRangeBytes(
                                                  resistanceLevelMin,
                                                  resitanceLevelMax
                                                  )
                                              )
                                          );
            break;

        case BLEProtocol.ActionCode.GetWorkoutControlState:
            BLEPluginInstance.SendMessage("ReceivePluginMessage",
                                          BLEProtocol.ConvertBytesToString(
                                              BLEResponse.PrepareWorkoutControlStateBytes(
                                                  controlState
                                                  )
                                              )
                                          );
            break;

        case BLEProtocol.ActionCode.GetResistanceLevel:
            BLEPluginInstance.SendMessage("ReceivePluginMessage",
                                          BLEProtocol.ConvertBytesToString(
                                              BLEResponse.PrepareResistanceLevelBytes(
                                                  resistanceLevel
                                                  )
                                              )
                                          );
            break;

        case BLEProtocol.ActionCode.SetWorkoutControlState:
            controlState = messageData[BLEProtocol.Index.WorkoutControlState];
            BLEPluginInstance.SendMessage("ReceivePluginMessage",
                                          BLEProtocol.ConvertBytesToString(
                                              BLENotify.PrepareWorkoutControlStateBytes(
                                                  controlState
                                                  )
                                              )
                                          );
            break;

        case BLEProtocol.ActionCode.SetResistanceLevel:
            resistanceLevel = messageData[BLEProtocol.Index.ResistanceLevel];
            BLEPluginInstance.SendMessage("ReceivePluginMessage",
                                          BLEProtocol.ConvertBytesToString(
                                              BLENotify.PrepareResistanceLevelBytes(
                                                  resistanceLevel
                                                  )
                                              )
                                          );
            break;

        default:
            BLEDebug.LogError("Error: Received Invalid ActionCode");
            break;
        }
    }