public static dynamic DecodeMessage(MessageTypeEnum msgType, byte[] msgBytes)
        {
            switch (msgType)
            {
            case MessageTypeEnum.VarList:
                return(VarTypeListModel.DecodeByteArray(msgBytes));

            case MessageTypeEnum.StatusError:
                return(ErrorStatusModel.DecodeByteArray(msgBytes));

            case MessageTypeEnum.StatusOk:
                return(OkStatusModel.DecodeByteArray(msgBytes));

            case MessageTypeEnum.StatusRequest:
                return(StatusRequestModel.DecodeByteArray(msgBytes));

            case MessageTypeEnum.MonitorStart:
                return(MonitorStartModel.DecodeByteArray(msgBytes));

            case MessageTypeEnum.MonitorStop:
                return(MonitorStopModel.DecodeByteArray(msgBytes));

            case MessageTypeEnum.VarListRequest:
                return(VarListRequestModel.DecodeByteArray(msgBytes));

            case MessageTypeEnum.VarValues:
                return(msgBytes);

            case MessageTypeEnum.BTInput:
                return(BTInputModel.DecodeByteArray(msgBytes));

            default:
                return(null);
            }
        }
        public void JoyStickInput(GamePadInputModel input)
        {
            if (input.Value < 0)
            {
                input.Value = 1;                  // remove the negative number from the D-Pad
            }
            // write the info to the GUI somehow
            Callback.SetPadControlText(input.ToString());

            if (IsConnected)
            {
                // get model
                BTInputModel Model = new BTInputModel {
                    Value = Convert.ToUInt16(input.Value),
                    Key   = Convert.ToByte(input.InputNumber)
                };
                // message type
                MessageTypeEnum msgType = MessageTypeEnum.BTInput;

                // send UART message
                SendBytes(msgType, Model);
            }
        }