コード例 #1
0
void K3LAPIBase::mixerRecord(int32 dev, KDeviceType type, int32 obj, byte track, KMixerSource src, int32 index) const
{
    /* estes buffers *NAO PODEM SER ESTATICOS*! */
    char cmd[] = { 0x3f, 0x03, (char)obj, (char)track, 0xff, 0xff };

    switch (src)
    {
        case kmsChannel:
            cmd[4] = 0x05;
            cmd[5] = (char)index;
            break;

        case kmsNoDelayChannel:
            cmd[4] = 0x0a;
            cmd[5] = (char)index;
            break;

        case kmsGenerator:
            cmd[4] = 0x09;

            switch ((KMixerTone)index)
            {
                case kmtSilence:
                    cmd[5] = 0x0F;
                    break;
                case kmtDial:
                    cmd[5] = 0x08;
                    break;
                case kmtBusy:
                    cmd[5] = 0x0D;
                    break;

                case kmtFax:
                case kmtVoice:
                case kmtEndOf425:
                case kmtCollect:
                case kmtEndOfDtmf:
                    /* TODO: exception, unable to generate */
                    break;
            }
            break;

        case kmsCTbus:
        case kmsPlay:
            /* TODO: exception, not implemented! */
            break;
    }

    int32 dsp = get_dsp(type, DSP_AUDIO);

    raw_command(dev, dsp, cmd, sizeof(cmd));
}
コード例 #2
0
ファイル: scsi_raw.c プロジェクト: AmirAbrams/haiku
static status_t
raw_ioctl(raw_device_info *device, int op, void *buffer, size_t length)
{
	status_t res;

	switch (op) {
		case B_RAW_DEVICE_COMMAND:
			res = raw_command(device, buffer);
			break;

		default:
			res = B_DEV_INVALID_IOCTL;
	}

	SHOW_FLOW(4, "%x: %s", op, strerror(res));

	return res;
}
コード例 #3
0
void K3LAPIBase::raw_command(int32 dev, int32 dsp, std::string & str) const
{
    raw_command(dev, dsp, str.data(), str.size());
}