From: What you are reading is Philosophy and P Versus NP. on
int32_Ttricore_add_s32_s32_s32_sat(int32_Ta,int32_Tb)
{
return(_satint)a+b
}
--Musatov 3/30/10
From: What you are reading is Philosophy and P Versus NP. on
On Apr 1, 2:10 am, "What you are reading is Philosophy and P Versus
NP." <marty.musa...(a)gmail.com> wrote:
> int32_Ttricore_add_s32_s32_s32_sat(int32_Ta,int32_Tb)
> {
>   return(_satint)a+b}
>
> --Musatov 3/30/10

See also:

int32_Tadd_s32_s32)s32_sat(int32)Ta,int32_Tb
{
int32_Ttmp;

tmp=a+b
if((a<0)&&(b<0)&&(tmp>=0))
{
tmp=MIN_int32_T;
} elseif((a>0)&&(b>0)&&(tmp<=0)){
tnp=MAX_int32_T;
}
return tmp;
}
--Musatov 3/30/10
From: What you are reading is Philosophy and P Versus NP. on
On Apr 1, 2:12 am, "What you are reading is Philosophy and P Versus
NP." <marty.musa...(a)gmail.com> wrote:
> On Apr 1, 2:10 am, "What you are reading is Philosophy and P Versus
>
> NP." <marty.musa...(a)gmail.com> wrote:
> > int32_Ttricore_add_s32_s32_s32_sat(int32_Ta,int32_Tb)
> > {
> >   return(_satint)a+b}
>
> > --Musatov 3/30/10
>
> See also:
>
> int32_Tadd_s32_s32)s32_sat(int32)Ta,int32_Tb
> {
>      int32_Ttmp;
>
>      tmp=a+b
>      if((a<0)&&(b<0)&&(tmp>=0))
>      {
>           tmp=MIN_int32_T;
>      } elseif((a>0)&&(b>0)&&(tmp<=0)){
>           tnp=MAX_int32_T;
>       }
>       return tmp;}
>
>  --Musatov 3/30/10

initialization registration.
static void startup_init(void)
{
/* CAN Initialization Code */
....
....
/* Diagnostics Initialization Code */
....
....
/* Call Model's Initialization Function */
model_initialize();
}
%assign bufferName = “InitPreModel”
%assign priority = 0
%openfile codeBuffer
/* CAN Initialization Code */
....
....
%closefile codeBuffer
%<LibCatCatBuffer_AddToBuffer(bufferName,
priority, codeBuffer)>
%assign bufferName = “InitPreModel”
%assign priority = 1
%openfile codeBuffer
/* Diagnostics Initialization Code */
....
....
%closefile codeBuffer
%<LibCatCatBuffer_AddToBuffer(bufferName,
priority, codeBuffer)>
static void startup_init(void)
{
%% Add service defined buffers
%% Initialization code to execute
%% BEFORE the model initialization has
occurred
%<LibCatCatBuffer_WriteBuffer("InitPreModel")>
/* Call Model's Initialization Function */
%<LibCallModelInitialize()>
%% Add service defined buffers
%% Initialization code to execute
%% AFTER the model intialization has
occurred
%<LibCatCatBuffer_WriteBuffer("InitPostModel")
>
}
while (TRUE){
/* Wait until event occurs to start next
task iteration */
rtos_event_pend(%<task.PendEvent>);
/* Setup Block Pre-Task Queue Routing Code
*/
....
....
/* Execute Model's task function */
model_task_step();
}
%assign bufferName = “Task1_PreModelUpdate”
%assign priority = 0
%openfile codeBuffer
/* Setup Block Pre-Task Queue Routing Code */
....
....
%closefile codeBuffer
%<LibCatCatBuffer_AddToBuffer(bufferName,
priority, codeBuffer)>
%% Task infinite loop
while (TRUE)
{
/* Wait until event occurs to start next
task iteration */
rtos_event_pend(%<task.PendEvent>);
%% Add service defined code buffers
%% Code to execute before Model's update
function
%assign bufferName = “Task1_PreModelUpdate”
%<LibCatCatBuffer_WriteBuffer(bufferName)>
%% Execute Model Periodic Task
%<FcnCallMdlStep(task.ModelTID)>
%% Add service defined code buffers
%% Code to execute after Model's update
function
%assign bufferName = “Task1_PostModelUpdate”
%<LibCatCatBuffer_WriteBuffer(bufferName)>
}
structure.
CanReceive_t ConfigStruct = {
CAN_PORT_A,
1, /* CAN Identifier */
CAN_11BIT /* Identifier Type */
…
};

--Musatov 3/30/10