#include <libraries/configvars.h>
#include <dos/dos.h>
#include <dos/rdargs.h>
#define __USE_SYSBASE
#include <proto/exec.h>
#include <proto/expansion.h>
#include <proto/dos.h>
#include <string.h>
extern UBYTE *_ProgramName;

void __main(UBYTE *cmdline)
{
	static char TEMPLATE[] = "VENDOR/A/N,PRODUCT/A/N,CLEAR/S";
	struct RDArgs *rda;
	LONG args[3];
	LONG vendor, product;
	BOOL clear;
	struct ConfigDev *cd;
	LONG rc;

	memset(args, 0, sizeof(args));
	rda = ReadArgs(TEMPLATE, args, NULL);
	if (rda == NULL) {
		PrintFault(IoErr(),_ProgramName);
		exit(RETURN_FAIL);
	}

	rc = RETURN_WARN;

	vendor  = *(LONG *)args[0];
	product = *(LONG *)args[1];
	clear   = (BOOL) (args[2] != 0);

	cd = NULL;
	while (cd = FindConfigDev(cd, vendor, product)) {
		if (clear) {
			if (!(cd->cd_Flags & CDF_SHUTUP))
				continue;
			Printf("Enabling board at 0x%08lx\n", cd->cd_BoardAddr);
			cd->cd_Flags &= ~CDF_SHUTUP;
			rc = RETURN_OK;
			break;
		} else {
			if (cd->cd_Flags & CDF_SHUTUP)
				continue;
			Printf("Disabling board at 0x%08lx\n", cd->cd_BoardAddr);
			cd->cd_Flags |= CDF_SHUTUP;
			rc = RETURN_OK;
			break;
		}
	}

	FreeArgs(rda);
	exit(rc);
}
