A Sample Module

File module.c

Provided with the skeleton system is the outline of a module. This basically consists of an endless loop which receives command messages and processes them with a case statement. This example provides a single command which takes the data in the message, (on mp->inpdata[]) and puts the result in an array in the shared memory (adp->adata[]). Results are sent back with the SndReplyMsg(). Note the error return of the integer –501 with the success value 0.

	/* MO_CALLMOD
	 * Sample command. Receives a list of numbers in the data
	 * part of the message. Takes these numbers, multiplies them
	 * by 2 and stuffs the results in the shared memory segment.
	 * Returns an error on nsamples <= 0.
	 */
	case MO_CALLMOD:
		if(mp->nsamples <= 0) {
			printf("Bad Nsamples %d\n", mp->nsamples);
			SndReplyMsg(mrfd, (void *)-501, 0, rtype);
			break;
		}
		for(i=0; i<mp->nsamples; i++) {
			printf("Value %d\n", mp->inpdata[i]);
			adp->adata[i] = mp->inpdata[i] * 2;
		}
		adp->nsamples = mp->nsamples;
		rval = 0;
		SndReplyMsg(mrfd, (void *)rval, 0, rtype);
		break;

 

Normally a module such as this would control some hardware via a device driver.