int main () { PROCESS_ATTRIBUTE_TYPE tattr; RETURN_CODE_TYPE ret; CREATE_BLACKBOARD ("TrainPpu_trainTraction_tractionIn_globalVariable", sizeof (cbtc_refined_model__TractionData_freshness_t_impl), &(TrainPpu_trainTraction_tractionIn_globalVariable), &(ret)); CREATE_BLACKBOARD ("VobcTrainPositionEstimation_vobcTrainPositionEstimation_additionalTrainPositionOffset_globalVariable", sizeof (TrainPositionOffset), &(VobcTrainPositionEstimation_vobcTrainPositionEstimation_additionalTrainPositionOffset_globalVariable), &(ret)); CREATE_BLACKBOARD ("VobcTrainPositionEstimation_vobcTrainPositionEstimation_wheelAngleIn_globalVariable", sizeof (cbtc_refined_model__OdometerData_freshness_t_impl), &(VobcTrainPositionEstimation_vobcTrainPositionEstimation_wheelAngleIn_globalVariable), &(ret)); CREATE_BLACKBOARD ("TrainSpeedAccelCompute_trainSpeedAccelCompute_trainPositionIn_globalVariable", sizeof (cbtc_refined_model__VobcData_freshness_t_impl), &(TrainSpeedAccelCompute_trainSpeedAccelCompute_trainPositionIn_globalVariable), &(ret)); CREATE_SAMPLING_PORT ("train_inst_TrainSpeedAccelCompute_inst_eoaIn", sizeof( cbtc_refined_model__EndOfAuthority_freshness_t_impl ), DESTINATION, 10, &(train_inst_TrainSpeedAccelCompute_inst_eoaInglobalVariable), &(ret)); CREATE_SAMPLING_PORT ("train_inst_TrainSpeedAccelCompute_inst_trainPositionForMauOut", sizeof( cbtc_refined_model__VobcData_freshness_t_impl ), SOURCE, 10, &(train_inst_TrainSpeedAccelCompute_inst_trainPositionForMauOut_globalVariable), &(ret)); CREATE_SAMPLING_PORT ("train_inst_trainPpu_inst_trainDataOut", sizeof( TrainData ), SOURCE, 10, &(train_inst_trainPpu_inst_trainDataOut_globalVariable), &(ret)); CREATE_SAMPLING_PORT ("train_inst_trainPpu_inst_trainDataIn", sizeof( cbtc_refined_model__TrainData_freshness_t_impl ), DESTINATION, 10, &(train_inst_trainPpu_inst_trainDataInglobalVariable), &(ret)); tattr.ENTRY_POINT = cbtc_refined_model__train_inst_TrainPpu_odometerAcquisition_impl_Job; tattr.PERIOD = 300; tattr.DEADLINE = 300; tattr.BASE_PRIORITY = 1; strcpy(tattr.NAME, "TrainPpu_odometerAcquisition"); CREATE_PROCESS (&(tattr), &(arinc_threads[1]), &(ret)); START (arinc_threads[1], &(ret)); tattr.ENTRY_POINT = cbtc_refined_model__train_inst_TrainPpu_trainTraction_impl_Job; tattr.PERIOD = 300; tattr.DEADLINE = 300; tattr.BASE_PRIORITY = 1; strcpy(tattr.NAME, "TrainPpu_trainTraction"); CREATE_PROCESS (&(tattr), &(arinc_threads[2]), &(ret)); START (arinc_threads[2], &(ret)); tattr.ENTRY_POINT = cbtc_refined_model__train_inst_VobcTrainPositionEstimation_vobcTrainPositionEstimation_impl_Job; tattr.PERIOD = 300; tattr.DEADLINE = 300; tattr.BASE_PRIORITY = 2; strcpy(tattr.NAME, "VobcTrainPositionEstimation_vobcTrainPositionEstimation"); CREATE_PROCESS (&(tattr), &(arinc_threads[3]), &(ret)); START (arinc_threads[3], &(ret)); tattr.ENTRY_POINT = cbtc_refined_model__train_inst_TrainSpeedAccelCompute_trainSpeedAccelCompute_impl_Job; tattr.PERIOD = 300; tattr.DEADLINE = 300; tattr.BASE_PRIORITY = 2; strcpy(tattr.NAME, "TrainSpeedAccelCompute_trainSpeedAccelCompute"); CREATE_PROCESS (&(tattr), &(arinc_threads[4]), &(ret)); START (arinc_threads[4], &(ret)); SET_PARTITION_MODE (NORMAL, &(ret)); return (0); }
int main () { PROCESS_ATTRIBUTE_TYPE tattr; RETURN_CODE_TYPE ret; CREATE_BLACKBOARD ("IPingOrPong_Cping_ping_delayed_PongIn_globalVariable", sizeof (PingPongMessage), &(IPingOrPong_Cping_ping_delayed_PongIn_globalVariable), &(ret)); CREATE_SAMPLING_PORT ("S2_inst_C2_mode", sizeof( ROLE ), DESTINATION, 10, &(S2_inst_C2_modeglobalVariable), &(ret)); CREATE_SAMPLING_PORT ("S2_inst_C2_PingIn", sizeof( PingPong_refined_model__PingPongMessage_freshness_t_impl ), DESTINATION, 10, &(S2_inst_C2_PingInglobalVariable), &(ret)); CREATE_SAMPLING_PORT ("S2_inst_C2_PongIn", sizeof( PingPongMessage ), DESTINATION, 10, &(S2_inst_C2_PongInglobalVariable), &(ret)); CREATE_SAMPLING_PORT ("S2_inst_C2_PingOut", sizeof( PingPong_refined_model__PingPongMessage_freshness_t_impl ), SOURCE, 10, &(S2_inst_C2_PingOut_globalVariable), &(ret)); CREATE_SAMPLING_PORT ("S2_inst_C2_PongOut", sizeof( PingPongMessage ), SOURCE, 10, &(S2_inst_C2_PongOut_globalVariable), &(ret)); CREATE_SAMPLING_PORT ("S2_inst_C2_badSequenceNumber", sizeof( Exception ), SOURCE, 10, &(S2_inst_C2_badSequenceNumber_globalVariable), &(ret)); tattr.ENTRY_POINT = PingPong_refined_model__S2_inst_IPingOrPong_Cping_ping_impl_Job; tattr.PERIOD = 40; tattr.DEADLINE = 40; tattr.BASE_PRIORITY = 3; strcpy(tattr.NAME, "IPingOrPong_Cping_ping"); CREATE_PROCESS (&(tattr), &(arinc_threads[1]), &(ret)); START (arinc_threads[1], &(ret)); tattr.ENTRY_POINT = PingPong_refined_model__S2_inst_IPingOrPong_Cping_delayed_PongIn_impl_Job; tattr.PERIOD = 40; tattr.DEADLINE = 40; tattr.BASE_PRIORITY = 3; strcpy(tattr.NAME, "IPingOrPong_Cping_delayed_PongIn"); CREATE_PROCESS (&(tattr), &(arinc_threads[2]), &(ret)); START (arinc_threads[2], &(ret)); tattr.ENTRY_POINT = PingPong_refined_model__S2_inst_IPingOrPong_Cpong_pong_impl_Job; tattr.PERIOD = 40; tattr.DEADLINE = 40; tattr.BASE_PRIORITY = 3; strcpy(tattr.NAME, "IPingOrPong_Cpong_pong"); CREATE_PROCESS (&(tattr), &(arinc_threads[3]), &(ret)); START (arinc_threads[3], &(ret)); SET_PARTITION_MODE (NORMAL, &(ret)); return (0); }
/* Entry point */ void main(void){ int cnt; char sal_code[MAX_CAD]; RETURN_CODE_TYPE retCode; PROCESS_ID_TYPE procMainIdMT; PROCESS_ID_TYPE procMainId1; PROCESS_ID_TYPE procMainId2; PROCESS_ID_TYPE procMainId3; /* Blackboard definitions and identifier */ BLACKBOARD_DEFINITION blackboardDefinitions[NUM_BLACKBOARDS]; BLACKBOARD_ID_TYPE bbId[NUM_BLACKBOARDS]; /* Process Master_Test is created */ CREATE_PROCESS (&(processTable [0]), /* process attribute */ &procMainIdMT, /* process Id */ &retCode); CHECK_CODE(": CREATE_PROCESS Process Master Test", retCode, sal_code); printf("%s\n", sal_code); /* Process P1 is created */ CREATE_PROCESS (&(processTable [1]), /* process attribute */ &procMainId1, /* process Id */ &retCode); CHECK_CODE(": CREATE_PROCESS Process 1", retCode, sal_code); printf("%s\n", sal_code); /* Process P2 is created*/ CREATE_PROCESS (&(processTable [2]), /* process attribute */ &procMainId2, /* process Id */ &retCode); CHECK_CODE(": CREATE_PROCESS Process 2", retCode, sal_code); printf("%s\n", sal_code); /* Process P2 is created*/ CREATE_PROCESS (&(processTable [3]), /* process attribute */ &procMainId3, /* process Id */ &retCode); CHECK_CODE(": CREATE_PROCESS Process 3", retCode, sal_code); printf("%s\n", sal_code); /* To init blackboards */ strcpy (BLACKBOARD_NAME_0, "blackboard1"); strcpy(blackboardDefinitions[0].name, BLACKBOARD_NAME_0); blackboardDefinitions[0].msgSize = 3; strcpy(BLACKBOARD_NAME_1, "blackboard2"); strcpy(blackboardDefinitions[1].name, BLACKBOARD_NAME_1); blackboardDefinitions[1].msgSize = 3; /* Blackboard B1 and B2 are created and clear */ for (cnt = 0; cnt < NUM_BLACKBOARDS; cnt++){ bbId [cnt] = -1; retCode = -1; CREATE_BLACKBOARD (blackboardDefinitions[cnt].name, blackboardDefinitions[cnt].msgSize, &bbId[cnt], &retCode); CHECK_CODE(": CREATE_BLACKBOARD", retCode, sal_code); printf("%s %s\n", sal_code, blackboardDefinitions [cnt].name); CLEAR_BLACKBOARD(bbId [cnt], &retCode); CHECK_CODE(": CREAR_BLACKBOARD", retCode, sal_code); printf("%s %s\n", sal_code, blackboardDefinitions [cnt].name); } /* Start main process ... */ START(procMainIdMT, &retCode); CHECK_CODE(": START Process Master Test", retCode, sal_code); printf("%s\n", sal_code); /* To set the partition in a Normal State */ SET_PARTITION_MODE(NORMAL, &retCode); CHECK_CODE(": SET_PARTITION_MODE ", retCode, sal_code); printf("%s\n", sal_code); return; }