CORDET Framework - C2 Implementation
CrPsEvtRep.c
1 
23 #include "CrPsEvtRep.h"
24 
26 #include "CrFwConstants.h"
27 #include "Pckt/CrFwPckt.h"
29 #include "OutCmp/CrFwOutCmp.h"
31 #include "CrFwCmpData.h"
32 
34 #include "FwSmConstants.h"
35 #include "FwSmConfig.h"
36 #include "FwSmCore.h"
37 #include "FwPrDCreate.h"
38 #include "FwPrConfig.h"
39 #include "FwPrCore.h"
40 #include "FwPrConstants.h"
41 
42 #include <DataPool/CrPsDpServEvt.h>
44 
45 
56 {
57  CrFwCmpData_t *cmpData;
58  CrFwOutCmpData_t *cmpSpecificData;
59  CrFwPckt_t pckt;
61  CrPsNumberU4_t nOfDetectedEvts;
62  CrFwCounterU2_t evtSlot;
63  CrPsEid_t eid, evtEid;
64  CrPsEid_t evtEidArray[EVT_N_EID] = EVT_EID;
65 
66  /* Get packet */
67  cmpData = (CrFwCmpData_t*)FwSmGetData(smDesc);
68  cmpSpecificData = (CrFwOutCmpData_t *) cmpData->cmpSpecificData;
69  pckt = cmpSpecificData->pckt;
70 
71  /* Get Severity Level (= Service Sub Type) */
72  servSubType = CrFwPcktGetServSubType(pckt);
73 
74  /* Update observable nOfDetectedEvt x */
75  switch (servSubType)
76  {
78  nOfDetectedEvts = getDpnOfDetectedEvts_1();
79  nOfDetectedEvts++;
80  setDpnOfDetectedEvts_1(nOfDetectedEvts);
81  break;
83  nOfDetectedEvts = getDpnOfDetectedEvts_2();
84  nOfDetectedEvts++;
85  setDpnOfDetectedEvts_2(nOfDetectedEvts);
86  break;
88  nOfDetectedEvts = getDpnOfDetectedEvts_3();
89  nOfDetectedEvts++;
90  setDpnOfDetectedEvts_3(nOfDetectedEvts);
91  break;
93  nOfDetectedEvts = getDpnOfDetectedEvts_4();
94  nOfDetectedEvts++;
95  setDpnOfDetectedEvts_4(nOfDetectedEvts);
96  break;
97  default:
98  break;
99  }
100 
101  /* Get EID */
102  eid = CrFwPcktGetDiscriminant(pckt);
103 
104  /* look for the slot */
105  for (evtSlot = 0; evtSlot < EVT_N_EID; evtSlot++)
106  {
107  evtEid = evtEidArray[evtSlot];
108 
109  if (eid == evtEid)
110  break;
111  }
112 
113  if (evtSlot == EVT_N_EID)
114  {
115  return 0;
116  }
117  else
118  {
119  return getDpisEidEnabledItem(evtSlot);
120  }
121 }
122 
131 void CrPsEvtRepUpdateAction(FwSmDesc_t smDesc)
132 {
133  CrFwCmpData_t *cmpData;
134  CrFwOutCmpData_t *cmpSpecificData;
135  CrFwPckt_t pckt;
137  CrPsEid_t eid;
138  CrFwTimeStamp_t timeStamp;
139  CrPsNumberU4_t nOfGenEvtRep;
140 
141  /* Get packet */
142  cmpData = (CrFwCmpData_t*)FwSmGetData(smDesc);
143  cmpSpecificData = (CrFwOutCmpData_t *) cmpData->cmpSpecificData;
144  pckt = cmpSpecificData->pckt;
145 
146  /* Get Severity Level (= Service Sub Type) */
147  servSubType = CrFwPcktGetServSubType(pckt);
148 
149  /* Get EID */
150  eid = CrFwPcktGetDiscriminant(pckt);
151 
152  /* Get current Time */
153  timeStamp = CrFwOutCmpGetTimeStamp(smDesc);
154 
155  /* Update observable nOfGenEvtRep x, lastEvtEid i, lastEvtTime x */
156  switch (servSubType)
157  {
159  nOfGenEvtRep = getDpnOfGenEvtRep_1();
160  nOfGenEvtRep++;
161  setDpnOfGenEvtRep_1(nOfGenEvtRep);
162  setDplastEvtEid_1(eid);
163  setDplastEvtTime_1(timeStamp);
164  break;
166  nOfGenEvtRep = getDpnOfGenEvtRep_2();
167  nOfGenEvtRep++;
168  setDpnOfGenEvtRep_2(nOfGenEvtRep);
169  setDplastEvtEid_2(eid);
170  setDplastEvtTime_2(timeStamp);
171  break;
173  nOfGenEvtRep = getDpnOfGenEvtRep_3();
174  nOfGenEvtRep++;
175  setDpnOfGenEvtRep_3(nOfGenEvtRep);
176  setDplastEvtEid_3(eid);
177  setDplastEvtTime_3(timeStamp);
178  break;
180  nOfGenEvtRep = getDpnOfGenEvtRep_4();
181  nOfGenEvtRep++;
182  setDpnOfGenEvtRep_4(nOfGenEvtRep);
183  setDplastEvtEid_4(eid);
184  setDplastEvtTime_4(timeStamp);
185  break;
186  default:
187  break;
188  }
189 
190  cmpData->outcome = 1;
191 
192  return ;
193 }
Type for the Framework Component Data (FCD).
#define CRPS_EVT_SEVLEVEL4_REP
Subtype identifier of the Event Report Severity Level 4 out-going report packet.
CrFwOutcome_t outcome
The outcome of an action or check executed by a state machine or by one of its procedures.
#define EVT_N_EID
Number of event identifiers supported by the application.
CrFwDiscriminant_t CrFwPcktGetDiscriminant(CrFwPckt_t pckt)
Return the discriminant of the command or report encapsulated in a packet.
static CrFwServSubType_t servSubType
Service sub-type.
#define CRPS_EVT_SEVLEVEL2_REP
Subtype identifier of the Event Report Severity Level 2 out-going report packet.
static CrPsNumberU4_t getDpnOfGenEvtRep_4()
Gets the value of the datapool item nOfGenEvtRep_4.
unsigned char CrFwServSubType_t
Type used for the command or report sub-type.
Interface for accessing data pool items.
static void setDpnOfDetectedEvts_3(CrPsNumberU4_t nOfDetectedEvts_3)
Sets the value of the datapool item nOfDetectedEvts_3.
Definition of the OutFactory component.
Type for the data describing an OutComponent.
static void setDpnOfGenEvtRep_2(CrPsNumberU4_t nOfGenEvtRep_2)
Sets the value of the datapool item nOfGenEvtRep_2.
static void setDpnOfDetectedEvts_1(CrPsNumberU4_t nOfDetectedEvts_1)
Sets the value of the datapool item nOfDetectedEvts_1.
Header file to define all service and packet identifiers.
CrFwPckt_t pckt
Packet to which the out-going command or report is serialized.
Interface for creating and accessing a report or command packet.
int CrFwBool_t
Type used for boolean values (1 represent "true" and 0 represents "false").
Definition: CrFwConstants.h:30
static CrPsNumberU4_t getDpnOfGenEvtRep_1()
Gets the value of the datapool item nOfGenEvtRep_1.
static CrPsNumberU4_t getDpnOfDetectedEvts_3()
Gets the value of the datapool item nOfDetectedEvts_3.
static CrPsNumberU4_t getDpnOfDetectedEvts_1()
Gets the value of the datapool item nOfDetectedEvts_1.
Header file to define all invariant publicly available constants and types for the CORDET Framework...
uint16_t CrPsEid_t
Type used for Event Id of a Packet.
static void setDplastEvtEid_1(CrPsEid_t lastEvtEid_1)
Sets the value of the datapool item lastEvtEid_1.
void CrPsEvtRepUpdateAction(FwSmDesc_t smDesc)
Update action of TM(5,1) EvtRep1.
Definition: CrPsEvtRep.c:131
static CrPsNumberU4_t getDpnOfDetectedEvts_2()
Gets the value of the datapool item nOfDetectedEvts_2.
CrFwTimeStamp_t CrFwOutCmpGetTimeStamp(FwSmDesc_t smDesc)
Return the time stamp attribute of the OutComponent.
Definition: CrFwOutCmp.c:215
static void setDpnOfGenEvtRep_1(CrPsNumberU4_t nOfGenEvtRep_1)
Sets the value of the datapool item nOfGenEvtRep_1.
CrFwBool_t CrPsEvtRepEnableCheck(FwSmDesc_t smDesc)
Enable check of TM(5,x) EvtRep.
Definition: CrPsEvtRep.c:55
static void setDplastEvtEid_3(CrPsEid_t lastEvtEid_3)
Sets the value of the datapool item lastEvtEid_3.
static CrPsNumberU4_t getDpnOfDetectedEvts_4()
Gets the value of the datapool item nOfDetectedEvts_4.
void * cmpSpecificData
Derived data which are specific to each type of framework component.
Implementation of TM(5,x) EvtRep.
static void setDplastEvtTime_2(CrFwTimeStamp_t lastEvtTime_2)
Sets the value of the datapool item lastEvtTime_2.
static CrPsNumberU4_t getDpnOfGenEvtRep_3()
Gets the value of the datapool item nOfGenEvtRep_3.
static void setDplastEvtEid_4(CrPsEid_t lastEvtEid_4)
Sets the value of the datapool item lastEvtEid_4.
CrFwServSubType_t CrFwPcktGetServSubType(CrFwPckt_t pckt)
Return the service sub-type of the command or report encapsulated in a packet.
static void setDpnOfDetectedEvts_4(CrPsNumberU4_t nOfDetectedEvts_4)
Sets the value of the datapool item nOfDetectedEvts_4.
static void setDplastEvtEid_2(CrPsEid_t lastEvtEid_2)
Sets the value of the datapool item lastEvtEid_2.
static void setDplastEvtTime_4(CrFwTimeStamp_t lastEvtTime_4)
Sets the value of the datapool item lastEvtTime_4.
#define CRPS_EVT_SEVLEVEL1_REP
Subtype identifier of the Event Report Severity Level 1 out-going report packet.
static CrPsNumberU4_t getDpnOfGenEvtRep_2()
Gets the value of the datapool item nOfGenEvtRep_2.
char * CrFwPckt_t
Type for packets (see CrFwPckt.h).
Definition: CrFwConstants.h:36
Definition of the OutComponent Component of the framework.
#define EVT_EID
Array of EVT_N_EID elements holding the event identifiers in ascending order.
static void setDpnOfGenEvtRep_4(CrPsNumberU4_t nOfGenEvtRep_4)
Sets the value of the datapool item nOfGenEvtRep_4.
#define CRPS_EVT_SEVLEVEL3_REP
Subtype identifier of the Event Report Severity Level 3 out-going report packet.
static void setDpnOfDetectedEvts_2(CrPsNumberU4_t nOfDetectedEvts_2)
Sets the value of the datapool item nOfDetectedEvts_2.
static void setDplastEvtTime_1(CrFwTimeStamp_t lastEvtTime_1)
Sets the value of the datapool item lastEvtTime_1.
Definition of the OutLoader component.
unsigned short CrFwCounterU2_t
Type used for unsigned integers with a "medium" range.
static void setDpnOfGenEvtRep_3(CrPsNumberU4_t nOfGenEvtRep_3)
Sets the value of the datapool item nOfGenEvtRep_3.
static CrPsFlag_t getDpisEidEnabledItem(int i)
Gets the value of the i-th element in the datapool array isEidEnabled.
static void setDplastEvtTime_3(CrFwTimeStamp_t lastEvtTime_3)
Sets the value of the datapool item lastEvtTime_3.
unsigned int CrFwTimeStamp_t
Type used for the time stamp of a command or report.
P&P Software GmbH, Copyright 2012-2013, All Rights Reserved