Specify the Initialization, Output, and Termination
The setupImpl and stepImpl methods
hook the C functions to the System object™. The initialization
of a digital pin as output needs to be done only once at model initialization.
Hence, the MW_gpioInit function is called in setupImpl.
To update the logic state of the digital output pin, a call to MW_gpioRead is
made from the stepImpl method. At termination, a
call to MW_gpioTerminate is made from releaseImpl method
to release the hardware resource. Follow these steps to update the
initialization, output, and termination code sections of the DigitalRead System object you
created in Select System Object Template.
In the MATLAB® Editor, open
DigitalRead.mclass file.Update the
setupImplmethod using the following code.methods (Access=protected) function setupImpl(obj) %#ok<MANU> if isempty(coder.target) % Place simulation setup code here else % Call C-function implementing device initialization coder.cinlcude('MW_gpio.h'); coder.ceval('MW_gpioInit', 9, 0); end end ... end
The
coder.cevalfunction executes calls to the C wrapper functions inMW_gpio.h. The second and third arguments ofcoder.cevalare the ARM® Cortex®–A hardware board pin number and value, respectively.Update the
BuildInfomethod using the following code.methods (Static) ... function updateBuildInfo(buildInfo, context) if context.isCodeGenTarget('rtw') % Update buildInfo srcDir = fullfile(fileparts(mfilename('fullpath')),'src'); %#ok includeDir = fullfile(fileparts(mfilename('fullpath')),'include'); addIncludePaths(buildInfo,includeDir); % Use the following API's to add include files, sources and linker flags addSourceFiles(buildInfo,'MW_gpio.c', srcDir); end end ... end
Update the
stepImplmethod with the following code.methods(Access=protected) ... function y = stepImpl(obj) %#ok<MANU> y = double(0); if isempty(coder.target) % Place simulation output code here else % Call C-function implementing device output y = coder.ceval('MW_gpioRead', 9); end end ... end
Unlike the
DigitalWriteSystem object, thestepImplmethod for theDigitalReadSystem object defines an output,y, which is the logical value of the chosen pin.Update the
releaseImplmethod with the following code.methods(Access=protected) ... function releaseImpl(obj) %#ok<MANU> if isempty(coder.target) % Place simulation termination code here else % Call C-function implementing device termination coder.ceval('MW_gpioTerminate', 9); end end ... end
In the next section, you will Set Output Port Properties of your System object.
See Also
Create a Digital Read Block | Select System Object Template | Set Output Port Properties