#
# "raw" modem - phoneline
#

pcm.!phoneline {
	@args [ CARD DEV ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_MODEM_CARD
				ALSA_PCM_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.pcm.modem.card
			}
		}
	}
	@args.DEV {
		type integer
		default {
			@func igetenv
			vars [
				ALSA_MODEM_DEVICE
			]
			default {
				@func refer
				name defaults.pcm.modem.device
			}
		}
	}
	@func refer
	name {
		@func concat
		strings [
			"cards."
			{
				@func card_driver
				card $CARD
			}
			".pcm.modem." $DEV ":CARD=" $CARD
		]
	}
	hint.show off
}

#
#  "autohooked" modem
#

pcm.!modem {
	@args [ CARD DEV ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_MODEM_CARD
				ALSA_PCM_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.pcm.modem.card
			}
		}
	}
	@args.DEV {
		type integer
		default {
			@func igetenv
			vars [
				ALSA_MODEM_DEVICE
			]
			default {
				@func refer
				name defaults.pcm.modem.device
			}
		}
	}
	type hooks
	slave {
		pcm {
			@func concat
			strings [
				"cards.pcm.phoneline:CARD=" $CARD ",DEV=" $DEV
			]
		}
	}
	hooks.0 {
		type ctl_elems
		hook_args [
		{
			name "Off-hook Switch"
			preserve true
			value "on"
			lock false
			optional true
		}
		]
	}
	hint.show off
}
