Example #1
0
        [CommandHipc(14)] // 13.0.0+
        // ListAudioOutputDeviceName() -> (u32, buffer<bytes, 6>)
        public ResultCode ListAudioOutputDeviceName(ServiceCtx context)
        {
            string[] deviceNames = _impl.ListAudioOutputDeviceName();

            ulong position = context.Request.ReceiveBuff[0].Position;
            ulong size     = context.Request.ReceiveBuff[0].Size;

            ulong basePosition = position;

            int count = 0;

            foreach (string name in deviceNames)
            {
                byte[] buffer = Encoding.ASCII.GetBytes(name);

                if ((position - basePosition) + (ulong)buffer.Length > size)
                {
                    break;
                }

                context.Memory.Write(position, buffer);
                MemoryHelper.FillWithZeros(context.Memory, position + (ulong)buffer.Length, AudioDeviceNameSize - buffer.Length);

                position += AudioDeviceNameSize;
                count++;
            }

            context.ResponseData.Write(count);

            return(ResultCode.Success);
        }