[alsa-devel] [PATCH 1/2] New Control Plugin - arcam-av

Takashi Iwai tiwai at suse.de
Sun Jan 4 15:16:29 CET 2009


At Sun, 4 Jan 2009 12:37:11 +0000,
Peter Stokes wrote:
> 
> --- alsa-plugins-1.0.18-orig/arcam-av/arcam_av.c	1970-01-01 01:00:00.000000000 
> +0100
> +++ alsa-plugins-1.0.18/arcam-av/arcam_av.c	2009-01-02 22:30:55.000000000 
> +0000

Looks like your embedded patches are broken due to line-breaks by MUA.
Please fix it, or use attachments if it's difficult.

> +int arcam_av_connect(const char* port)
> +{
> +	int fd = open(port, O_RDWR | O_NOCTTY);
> +	if (fd < 0)
> +		return -errno;
> +
> +	struct termios portsettings;

Put this into the beginning to follow the standard C.

> +int arcam_av_send(int fd, arcam_av_cc_t command, unsigned char param1, 
> unsigned char param2)
> +{
> +	char buffer[7] = {'P', 'C', '_', command, param1, param2, 0x0D};
> +
> +	tcdrain(fd);
> +	ssize_t bytes = write(fd, buffer, 7);

Ditto.

> +	if (bytes == 7)
> +		return 0;
> +	else if (bytes >= 0)
> +		return -1;

No proper error code?

> +static int arcam_av_receive(int fd, arcam_av_cc_t* command, unsigned char* 
> param1, unsigned char* param2)
> +{
> +	static int index = 0;
> +	static arcam_av_cc_t received_command;
> +	static unsigned char received_param1;
> +	static unsigned char received_param2;

Are static variables safe to use here?
That is, is the plugin designed to access exclusively with a proper
protection?

> +
> +	do {
> +		static char buffer[8];

Ditto.

> +		ssize_t bytes = read(fd, buffer, sizeof buffer - index);
> +
> +		if (bytes <= 0)
> +			return -errno;
> +
> +		char* cursor = buffer;

Don't define a variable in the middle.

Well, I'll review the rest after my vacation is over...


thanks,

Takashi


More information about the Alsa-devel mailing list