Ejemplo n.º 1
0
        public static MorphicResult <MorphicUnit, MorphicUnit> SetState(FocusAssistState value)
        {
            byte[] buffer;
            switch (value)
            {
            case FocusAssistState.AlarmsOnly:
                buffer = new byte[] { 0x02, 0x00, 0x00, 0x00 };
                break;

            case FocusAssistState.PriorityOnly:
                buffer = new byte[] { 0x01, 0x00, 0x00, 0x00 };
                break;

            case FocusAssistState.Off:
                buffer = new byte[] { 0x00, 0x00, 0x00, 0x00 };
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(value));
            }

            // update Focus Assist state (e.g. profile)
            var updateWnfStateDataResult = FocusAssist.UpdateWnfStateData(FocusAssist.WNF_SHEL_QUIETHOURS_ACTIVE_PROFILE_CHANGED, buffer);

            if (updateWnfStateDataResult.IsError == true)
            {
                return(MorphicResult.ErrorResult());
            }

            // update UI to match mode change
            updateWnfStateDataResult = FocusAssist.UpdateWnfStateData(FocusAssist.WNF_SHEL_QUIET_MOMENT_SHELL_MODE_CHANGED, buffer);
            if (updateWnfStateDataResult.IsError == true)
            {
                return(MorphicResult.ErrorResult());
            }

            return(MorphicResult.OkResult());
        }
Ejemplo n.º 2
0
        public static MorphicResult <FocusAssistState, MorphicUnit> GetState()
        {
            var queryWnfStateDataResult = FocusAssist.QueryWnfStateData(FocusAssist.WNF_SHEL_QUIETHOURS_ACTIVE_PROFILE_CHANGED);

            if (queryWnfStateDataResult.IsError == true)
            {
                return(MorphicResult.ErrorResult());
            }
            var stateData = queryWnfStateDataResult.Value !;

            // parse the result
            if (stateData.Length != 4)
            {
                return(MorphicResult.ErrorResult());
            }

            if (stateData[0] == 0x00 && stateData[1] == 0x00 && stateData[2] == 0x00 && stateData[3] == 0x00)
            {
                // focus assist off
                return(MorphicResult.OkResult(FocusAssistState.Off));
            }
            else if (stateData[0] == 0x01 && stateData[1] == 0x00 && stateData[2] == 0x00 && stateData[3] == 0x00)
            {
                // focus assist on, priority only
                return(MorphicResult.OkResult(FocusAssistState.PriorityOnly));
            }
            else if (stateData[0] == 0x02 && stateData[1] == 0x00 && stateData[2] == 0x00 && stateData[3] == 0x00)
            {
                // focus assist on, alarms only
                return(MorphicResult.OkResult(FocusAssistState.AlarmsOnly));
            }
            else
            {
                // unknown state
                return(MorphicResult.ErrorResult());
            }
        }