public void OnHomeButtonClicked(bool modeOn, bool statusOn)
        {
            ConnectionState connState = g_BLEAdapter.GetConnectionState();

            if (ConnectionState.Connected == connState)
            {
                /* Send fitness command with status flag */
                for (int i = 0; i < 4; i++)
                {
                    SendCommand_Fitness(statusOn);
                }

                ClearCalibrationData();

                g_waitingCmdRspFitness = new CmdRsp_fitness()
                {
                    waitingFlag = true,
                    modeOn      = modeOn,
                    statusOn    = statusOn
                };

                /* Update fragment buttons with current values */
                g_homeFragment.SetButtons(g_runtimeData.Mode, g_runtimeData.Status);
            }
            else
            {
                g_runtimeData.Mode   = modeOn;
                g_runtimeData.Status = false;

                /* Update fragment buttons */
                g_homeFragment.SetButtons(g_runtimeData.Mode, g_runtimeData.Status);
            }
        }
        /************************************/
        /* BLE Incoming Commands Processors */
        /************************************/
        private void ProcessAckCmd(int seqNo, byte[] payld)
        {
            if ((null != g_waitingCmdRspFitness) && (true == g_waitingCmdRspFitness.waitingFlag))
            {
                /* Update runtime data */
                g_runtimeData.Mode   = g_waitingCmdRspFitness.modeOn;
                g_runtimeData.Status = g_waitingCmdRspFitness.statusOn;
                g_runtimeData.RemainingRepetitionsCount = g_wearableSettingsIB.RemainingRepetitionsCount;

                /* Update home fragment */
                g_homeFragment.UpdateRepetitionsCount(g_runtimeData.RemainingRepetitionsCount);
                g_homeFragment.SetButtons(g_runtimeData.Mode, g_runtimeData.Status);

                g_waitingCmdRspFitness = null;
            }
        }
        public void OnHomeCalibrationEnd()
        {
            /* Send fitness command with status flag */
            ConnectionState connState = g_BLEAdapter.GetConnectionState();

            if (ConnectionState.Connected == connState)
            {
                for (int i = 0; i < 10; i++)
                {
                    SendCommand_Fitness(false);
                }
            }

            g_waitingCmdRspFitness = new CmdRsp_fitness()
            {
                waitingFlag = true,
                modeOn      = false,
                statusOn    = false
            };

            /* Decide which axis presents maximum variance */
            double xVar = MathHelper.Variance(g_ax_varCal);
            double yVar = MathHelper.Variance(g_ay_varCal);
            double zVar = MathHelper.Variance(g_az_varCal);

            if (xVar > yVar && xVar > zVar)
            {
                g_runtimeData.ActiveAxis = 0;
                CalculateThresholds(g_ax_meanCal.ToArray());
            }
            else if (yVar > xVar && yVar > zVar)
            {
                g_runtimeData.ActiveAxis = 1;
                CalculateThresholds(g_ay_meanCal.ToArray());
            }
            else
            {
                g_runtimeData.ActiveAxis = 2;
                CalculateThresholds(g_az_meanCal.ToArray());
            }

            ClearCalibrationData();
        }