Specify the Initialization, Output, and Termination Behavior
The setupImpl
and stepImpl
methods hook the C/C++
functions to the System object™. See Write the Hardware Specific C/C++ Code for more
information on creating C/C++ device driver code. The initialization of a digital pin as
output needs to be done only once at model initialization. Hence, the
digitalIOSetup
function is called in setupImpl
.
To update the logic state of the digital output pin, a call to
writeDigitalPin
is made from stepImpl
method.
Nothing needs to be done at termination. Follow these steps to update the
initialization, output, and termination code sections of the
DigitalWrite
System object you created in Select a System Object Template.
In the MATLAB® editor, open
DigitalWrite.m
class file.Update the
setupImpl
method 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.cinclude('digitalio_raspi.h'); coder.ceval('digitalIOSetup', 9, 1); end end ... end
The
coder.ceval
function executes calls to the C wrapper functions indigitalio_raspi.h
. The second and third arguments ofcoder.ceval
are the Raspberry Pi® hardware pin number and pin mode values, respectively.Update the
BuildInfo
method 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,'digitalio_raspi.c', srcDir); buildInfo.addLinkFlags({'-lwiringPi'}); end end ... end
Update the
stepImpl
method with the following code.methods(Access=protected) ... function stepImpl(obj,u) %#ok<INUSD> if isempty(coder.target) % Place simulation setup code here else % Call C-function implementing device output coder.ceval('writeDigitalPin', 9, u); end end ... end
Update the
releaseImpl
method 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 % No termination code for Raspberry Pi end end ... end
In the next section, you will Test System Object on MATLAB Command Line.
See Also
Create a Digital Write Block | Select a System Object Template | Test System Object on MATLAB Command Line