⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dm6430-test-lib-errors.c

📁 rt 6430 采集卡 linux下驱动源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/*	FILE NAME: dm6430-test-lib-errors.c	FILE DESCRIPTION: Test program for library error checking		This program exercises the error checking code added to the		library.  All exported functions are verified.  The following		types of tests are performed:		    - A function fails when expected.		    - If a function fails as expected, errno is set as		      expected depending upon the cause of failure.		    - A function succeeds when expected.		    - If a function can accept multiple valid inputs, it		      succeeds on all combinations of such inputs.	PROJECT NAME: Linux DM6430 Driver, Library, and Example Programs	PROJECT VERSION: (Defined in README.TXT)	Copyright 2004 RTD Embedded Technologies, Inc.  All Rights Reserved.*/#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dm6430lib.h>#define MAX_BOARDS 4static voidexpect_success(int status) {    if (status == -1) {	fprintf(stderr, "FAILED: Expected success but failure occurred.\n");	fprintf(stderr, "   errno is %d\n", errno);	exit(1);    }}static voidexpect_failure_and_check(int status, int expected_errno) {    if (status != -1) {	fprintf(stderr, "FAILED: Expected failure but success occurred.\n");	exit(1);    }    if (errno != expected_errno) {	fprintf(	    stderr,	    "FAILED: Expected errno %d, got %d.\n",	    expected_errno,	    errno	);	exit(1);    }}static voidexpect_failure(int status) {    if (status != -1) {	fprintf(stderr, "FAILED: Expected failure but success occurred.\n");	exit(1);    }}static voidusage(void) {    fprintf(	stderr,	"\n"	"Test dm6430 library error checking\n"	"\n"	"dm6430-test-errors --boards NUMBER_OF_BOARDS\n"	"\n"    );}static voidinterrupt_handler(void) {}intmain(int argument_count, char **arguments_p_p) {    double		dummy;    int			descriptors[MAX_BOARDS];    int			number_of_boards;    int			option_index;    int			status;    int			int_flag;    short int		short_int;    size_t		dma_bytes;    unsigned char	minor;    unsigned char	boards_flag = 0;    unsigned char	dma_buffer[4096];    unsigned char	u_char;    unsigned char	loop_count;    unsigned long int	counter_value;    unsigned short int	u_short_int;    unsigned short int	*digital_table_p;    ADTableRow		*ad_table_p;    if (argument_count != 3) {	fprintf(stderr, "Invalid number of command line options.\n");	exit(1);    }    for (option_index = 1; option_index < argument_count; ) {	if (strcmp(arguments_p_p[option_index], "--boards") == 0) {	    boards_flag = 1;	    option_index++;	    number_of_boards = atoi(arguments_p_p[option_index]);	    if ((number_of_boards <= 0) || (number_of_boards > MAX_BOARDS)) {		fprintf(stderr, "Invalid number of boards.\n");		usage();		exit(1);	    }	    option_index++;	} else {	    fprintf(		stderr,		"Invalid argument %s\n",		arguments_p_p[option_index]	    );	    usage();	    exit(1);	}    }    if (boards_flag == 0) {	fprintf(stderr, "--boards argument required.\n");	usage();	exit(1);    }    /*     * Test OpenBoard6430() error checking.     */    fprintf(stdout, "## Testing OpenBoard6430() ...\n");    for (minor = 0; minor < (number_of_boards + 1); minor++) {	fprintf(stdout, "    Minor number %d\n", minor);	status = OpenBoard6430(minor);	if (minor < number_of_boards) {	    expect_success(status);	    descriptors[minor] = status;	} else {	    /*	     * Do not check errno because it depends on which minor number is	     * being opened	     */	    expect_failure(status);	}    }    /*     * Test CloseBoard6430() error checking.     */    fprintf(stdout, "## Testing CloseBoard6430() ...\n");    for (minor = 0; minor < number_of_boards; minor++) {	fprintf(stdout, "    Minor number %d\n", minor);	fprintf(stdout, "        First attempt ...\n");	status = CloseBoard6430(descriptors[minor]);	expect_success(status);	fprintf(stdout, "        Second attempt ...\n");	status = CloseBoard6430(descriptors[minor]);	expect_failure_and_check(status, EBADF);    }    /*     * Test InstallCallbackIRQHandler6430() error checking.     */    fprintf(stdout, "## Testing InstallCallbackIRQHandler6430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = InstallCallbackIRQHandler6430(	descriptors[0],	interrupt_handler,	DM6430HR_INT1    );    expect_failure_and_check(status, EBADF);    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    fprintf(stdout, "    With NULL callback ...\n");    status = InstallCallbackIRQHandler6430(	descriptors[0],	NULL,	DM6430HR_INT1    );    expect_failure_and_check(status, EINVAL);    fprintf(stdout, "    With bad interrupt circuit ...\n");    status = InstallCallbackIRQHandler6430(	descriptors[0],	interrupt_handler,	(DM6430HR_INT2 + 1)    );    expect_failure_and_check(status, EINVAL);    fprintf(stdout, "    With another bad interrupt circuit ...\n");    status = InstallCallbackIRQHandler6430(	descriptors[0],	interrupt_handler,	-55    );    expect_failure_and_check(status, EINVAL);    fprintf(stdout, "    On valid descriptor (all circuits) ...\n");    for (	loop_count = DM6430HR_INT1;	loop_count <= DM6430HR_INT2;	loop_count++    ) {	fprintf(stdout, "        Circuit %d\n", loop_count);	status = InstallCallbackIRQHandler6430(	    descriptors[0],	    interrupt_handler,	    loop_count	);	expect_success(status);    }    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test RemoveIRQHandler6430() error checking.     */    fprintf(stdout, "## Testing RemoveIRQHandler6430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = RemoveIRQHandler6430(descriptors[0], DM6430HR_INT1);    expect_failure_and_check(status, EBADF);    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    fprintf(stdout, "    On bad interrupt circuit ...\n");    status = RemoveIRQHandler6430(descriptors[0], (DM6430HR_INT2 + 1));    expect_failure_and_check(status, EINVAL);    fprintf(stdout, "    On another bad interrupt circuit ...\n");    status = RemoveIRQHandler6430(descriptors[0], -17);    expect_failure_and_check(status, EINVAL);    fprintf(stdout, "    On valid descriptor (all circuits) ...\n");    for (	loop_count = DM6430HR_INT1;	loop_count <= DM6430HR_INT2;	loop_count++    ) {	fprintf(stdout, "        Circuit %d\n", loop_count);	fprintf(stdout, "            InstallCallbackIRQHandler6430()\n");	status = InstallCallbackIRQHandler6430(	    descriptors[0],	    interrupt_handler,	    loop_count	);	expect_success(status);	fprintf(stdout, "            RemoveIRQHandler6430()\n");	status = RemoveIRQHandler6430(descriptors[0], loop_count);	expect_success(status);    }    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test ClearRegister6430() error checking.     */    fprintf(stdout, "## Testing ClearRegister6430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = ClearRegister6430(descriptors[0], 0x0000);    expect_failure_and_check(status, EBADF);    fprintf(stdout, "    On valid descriptor ...\n");    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    status = ClearRegister6430(descriptors[0], 0x0000);    expect_success(status);    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test ClearBoard6430() error checking.     */    fprintf(stdout, "## Testing ClearBoard6430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = ClearBoard6430(descriptors[0]);    expect_failure_and_check(status, EBADF);    fprintf(stdout, "    On valid descriptor ...\n");    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    status = ClearBoard6430(descriptors[0]);    expect_success(status);    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test ClearADFIFO6430() error checking.     */    fprintf(stdout, "## Testing ClearADFIFO6430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = ClearADFIFO6430(descriptors[0]);    expect_failure_and_check(status, EBADF);    fprintf(stdout, "    On valid descriptor ...\n");    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    status = ClearADFIFO6430(descriptors[0]);    expect_success(status);    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test ClearADDMADone6430() error checking.     */    fprintf(stdout, "## Testing ClearADDMADone6430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = ClearADDMADone6430(descriptors[0]);    expect_failure_and_check(status, EBADF);    fprintf(stdout, "    On valid descriptor ...\n");    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    status = ClearADDMADone6430(descriptors[0]);    expect_success(status);    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test ClearChannelGainTable6430() error checking.     */    fprintf(stdout, "## Testing ClearChannelGainTable6430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = ClearChannelGainTable6430(descriptors[0]);    expect_failure_and_check(status, EBADF);    fprintf(stdout, "    On valid descriptor ...\n");    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    status = ClearChannelGainTable6430(descriptors[0]);    expect_success(status);    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test ResetChannelGainTable6430() error checking.     */    fprintf(stdout, "## Testing ResetChannelGainTable6430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = ResetChannelGainTable6430(descriptors[0]);    expect_failure_and_check(status, EBADF);    fprintf(stdout, "    On valid descriptor ...\n");    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    status = ResetChannelGainTable6430(descriptors[0]);    expect_success(status);    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test ClearDINFIFO6430() error checking.     */    fprintf(stdout, "## Testing ClearDINFIFO6430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = ClearDINFIFO6430(descriptors[0]);    expect_failure_and_check(status, EBADF);    fprintf(stdout, "    On valid descriptor ...\n");    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    status = ClearDINFIFO6430(descriptors[0]);    expect_success(status);    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test ClearIRQ06430() error checking.     */    fprintf(stdout, "## Testing ClearIRQ06430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = ClearIRQ06430(descriptors[0]);    expect_failure_and_check(status, EBADF);    fprintf(stdout, "    On valid descriptor ...\n");    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    status = ClearIRQ06430(descriptors[0]);    expect_success(status);    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test ClearIRQ16430() error checking.     */    fprintf(stdout, "## Testing ClearIRQ16430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = ClearIRQ16430(descriptors[0]);    expect_failure_and_check(status, EBADF);    fprintf(stdout, "    On valid descriptor ...\n");    status = OpenBoard6430(0);    expect_success(status);    descriptors[0] = status;    status = ClearIRQ16430(descriptors[0]);    expect_success(status);    status = CloseBoard6430(descriptors[0]);    expect_success(status);    /*     * Test InitBoard6430() error checking.     */    fprintf(stdout, "## Testing InitBoard6430() ...\n");    fprintf(stdout, "    On bad file descriptor ...\n");    status = InitBoard6430(descriptors[0]);    expect_failure_and_check(status, EBADF);    fprintf(stdout, "    On valid descriptor ...\n");    status = OpenBoard6430(0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -