Blame arcam-av/arcam_av.h

Packit Service cd2a00
/*
Packit Service cd2a00
 * ALSA -> Arcam AV control plugin
Packit Service cd2a00
 *
Packit Service cd2a00
 * Copyright (c) 2009 by Peter Stokes <linux@dadeos.co.uk>
Packit Service cd2a00
 *
Packit Service cd2a00
 * This library is free software; you can redistribute it and/or modify
Packit Service cd2a00
 * it under the terms of the GNU Lesser General Public License as
Packit Service cd2a00
 * published by the Free Software Foundation; either version 2.1 of
Packit Service cd2a00
 * the License, or (at your option) any later version.
Packit Service cd2a00
 *
Packit Service cd2a00
 * This program is distributed in the hope that it will be useful,
Packit Service cd2a00
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service cd2a00
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service cd2a00
 * GNU Lesser General Public License for more details.
Packit Service cd2a00
 *
Packit Service cd2a00
 * You should have received a copy of the GNU Lesser General Public
Packit Service cd2a00
 * License along with this library; if not, write to the Free Software
Packit Service cd2a00
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
Packit Service cd2a00
 */
Packit Service cd2a00
Packit Service cd2a00
#include <pthread.h>
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_ZONE1				= '1',
Packit Service cd2a00
	ARCAM_AV_ZONE2				= '2'
Packit Service cd2a00
} arcam_av_zone_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_POWER				= '*',
Packit Service cd2a00
	ARCAM_AV_VOLUME_CHANGE			= '/',
Packit Service cd2a00
	ARCAM_AV_VOLUME_SET			= '0',
Packit Service cd2a00
	ARCAM_AV_MUTE				= '.',
Packit Service cd2a00
	ARCAM_AV_SOURCE				= '1',
Packit Service cd2a00
	ARCAM_AV_SOURCE_TYPE			= '7',
Packit Service cd2a00
	ARCAM_AV_DIRECT				= '3',
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE			= '4',
Packit Service cd2a00
	ARCAM_AV_MULTI_DECODE			= '5',
Packit Service cd2a00
	ARCAM_AV_STEREO_EFFECT			= '6'
Packit Service cd2a00
} arcam_av_cc_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_OK				= 'P',
Packit Service cd2a00
	ARCAM_AV_ERROR				= 'R'
Packit Service cd2a00
} arcam_av_rc_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_POWER_STAND_BY			= '0',
Packit Service cd2a00
	ARCAM_AV_POWER_ON			= '1',
Packit Service cd2a00
	ARCAM_AV_POWER_REQUEST			= '9'
Packit Service cd2a00
} arcam_av_power_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_VOLUME_MIN			= '0',
Packit Service cd2a00
	ARCAM_AV_VOLUME_REQUEST			= '9'
Packit Service cd2a00
} arcam_av_volume_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_MUTE_ON			= '0',
Packit Service cd2a00
	ARCAM_AV_MUTE_OFF			= '1',
Packit Service cd2a00
	ARCAM_AV_MUTE_REQUEST			= '9'
Packit Service cd2a00
} arcam_av_mute_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_DIRECT_DISABLE			= '0',
Packit Service cd2a00
	ARCAM_AV_DIRECT_ENABLE			= '1',
Packit Service cd2a00
	ARCAM_AV_DIRECT_REQUEST			= '9'
Packit Service cd2a00
} arcam_av_direct_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_SOURCE_DVD 			= '0',
Packit Service cd2a00
	ARCAM_AV_SOURCE_SAT			= '1',
Packit Service cd2a00
	ARCAM_AV_SOURCE_AV			= '2',
Packit Service cd2a00
	ARCAM_AV_SOURCE_PVR			= '3',
Packit Service cd2a00
	ARCAM_AV_SOURCE_VCR			= '4',
Packit Service cd2a00
	ARCAM_AV_SOURCE_CD			= '5',
Packit Service cd2a00
	ARCAM_AV_SOURCE_FM			= '6',
Packit Service cd2a00
	ARCAM_AV_SOURCE_AM			= '7',
Packit Service cd2a00
	ARCAM_AV_SOURCE_DVDA			= '8',
Packit Service cd2a00
	ARCAM_AV_SOURCE_REQUEST			= '9'
Packit Service cd2a00
} arcam_av_source_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_SOURCE_TYPE_ANALOGUE 		= '0',
Packit Service cd2a00
	ARCAM_AV_SOURCE_TYPE_DIGITAL		= '1',
Packit Service cd2a00
	ARCAM_AV_SOURCE_TYPE_REQUEST		= '9'
Packit Service cd2a00
} arcam_av_source_type_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE_MONO		= '.',
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE_STEREO		= '/',
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE_PLII_MOVIE	= '0',
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE_PLII_MUSIC	= '1',
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE_PLIIx_MOVIE	= '3',
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE_PLIIx_MUSIC	= '4',
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE_DOLBY_PL		= '6',
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE_NEO6_CINEMA	= '7',
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE_NEO6_MUSIC	= '8',
Packit Service cd2a00
	ARCAM_AV_STEREO_DECODE_REQUEST		= '9'
Packit Service cd2a00
} arcam_av_stereo_decode_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_MULTI_DECODE_MONO		= '.',
Packit Service cd2a00
	ARCAM_AV_MULTI_DECODE_STEREO		= '/',
Packit Service cd2a00
	ARCAM_AV_MULTI_DECODE_MULTI_CHANNEL	= '0',
Packit Service cd2a00
	ARCAM_AV_MULTI_DECODE_PLIIx		= '2',
Packit Service cd2a00
	ARCAM_AV_MULTI_DECODE_REQUEST		= '9'
Packit Service cd2a00
} arcam_av_multi_decode_t;
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef enum {
Packit Service cd2a00
	ARCAM_AV_STEREO_EFFECT_NONE		= '0',
Packit Service cd2a00
	ARCAM_AV_STEREO_EFFECT_MUSIC		= '1',
Packit Service cd2a00
	ARCAM_AV_STEREO_EFFECT_PARTY		= '2',
Packit Service cd2a00
	ARCAM_AV_STEREO_EFFECT_CLUB		= '3',
Packit Service cd2a00
	ARCAM_AV_STEREO_EFFECT_HALL		= '4',
Packit Service cd2a00
	ARCAM_AV_STEREO_EFFECT_SPORTS		= '5',
Packit Service cd2a00
	ARCAM_AV_STEREO_EFFECT_CHURCH		= '6',
Packit Service cd2a00
	ARCAM_AV_STEREO_EFFECT_REQUEST		= '9'
Packit Service cd2a00
} arcam_av_stereo_effect_t;
Packit Service cd2a00
Packit Service cd2a00
int arcam_av_connect(const char* port);
Packit Service cd2a00
int arcam_av_send(int fd, arcam_av_cc_t command, unsigned char param1, unsigned char param2);
Packit Service cd2a00
Packit Service cd2a00
Packit Service cd2a00
typedef struct arcam_av_state {
Packit Service cd2a00
	union {
Packit Service cd2a00
		struct {
Packit Service cd2a00
			unsigned char		power;
Packit Service cd2a00
			unsigned char		volume;
Packit Service cd2a00
			unsigned char		mute;
Packit Service cd2a00
			unsigned char		direct;
Packit Service cd2a00
			unsigned char		source;
Packit Service cd2a00
			unsigned char		source_type;
Packit Service cd2a00
			unsigned char		stereo_decode;
Packit Service cd2a00
			unsigned char		stereo_effect;
Packit Service cd2a00
			unsigned char		multi_decode;
Packit Service cd2a00
		};
Packit Service cd2a00
		unsigned char			state[9];
Packit Service cd2a00
	} zone1;
Packit Service cd2a00
	union {
Packit Service cd2a00
		struct {
Packit Service cd2a00
			unsigned char		power;
Packit Service cd2a00
			unsigned char		volume;
Packit Service cd2a00
			unsigned char		mute;
Packit Service cd2a00
			unsigned char		source;
Packit Service cd2a00
		};
Packit Service cd2a00
		unsigned char			state[4];
Packit Service cd2a00
	} zone2;
Packit Service cd2a00
} arcam_av_state_t;
Packit Service cd2a00
Packit Service cd2a00
arcam_av_state_t* arcam_av_state_attach(const char* port);
Packit Service cd2a00
int arcam_av_state_detach(arcam_av_state_t* state);
Packit Service cd2a00
Packit Service cd2a00
int arcam_av_server_start(pthread_t* thread, const char* port);
Packit Service cd2a00
int arcam_av_server_stop(pthread_t thread, const char* port);
Packit Service cd2a00
Packit Service cd2a00
int arcam_av_client(const char* port);