static bool private_ClientGooseControlBlock_updateValues(ClientGooseControlBlock self, MmsValue* values) { int elementCount = MmsValue_getArraySize(values); if (elementCount > 5) { updateOrClone(&(self->goEna), values, 0); updateOrClone(&(self->goID), values, 1); updateOrClone(&(self->datSet), values, 2); updateOrClone(&(self->confRev), values, 3); updateOrClone(&(self->ndsCom), values, 4); updateOrClone(&(self->dstAddress), values, 5); } else return false; if (elementCount > 6) updateOrClone(&(self->minTime), values, 6); if (elementCount > 7) updateOrClone(&(self->maxTime), values, 7); if (elementCount > 8) updateOrClone(&(self->fixedOffs), values, 8); return true; }
bool private_ClientReportControlBlock_updateValues(ClientReportControlBlock self, MmsValue* values) { int rcbElementCount = MmsValue_getArraySize(values); updateOrClone(&(self->rptId), values, 0); updateOrClone(&(self->rptEna), values, 1); if (self->isBuffered) { updateOrClone(&(self->datSet), values, 2); updateOrClone(&(self->confRev), values, 3); updateOrClone(&(self->optFlds), values, 4); updateOrClone(&(self->bufTm), values, 5); updateOrClone(&(self->sqNum), values, 6); updateOrClone(&(self->trgOps), values,7); updateOrClone(&(self->intgPd), values, 8); updateOrClone(&(self->gi), values, 9); updateOrClone(&(self->purgeBuf), values, 10); updateOrClone(&(self->entryId), values, 11); updateOrClone(&(self->timeOfEntry), values, 12); if (rcbElementCount > 13) { MmsValue* element13 = MmsValue_getElement(values, 13); if (MmsValue_getType(element13) == MMS_OCTET_STRING) updateOrClone(&(self->owner), values, 13); else { updateOrClone(&(self->resvTms), values, 13); if (rcbElementCount > 14) updateOrClone(&(self->owner), values, 14); } } } else { updateOrClone(&(self->resv), values, 2); updateOrClone(&(self->datSet), values, 3); updateOrClone(&(self->confRev), values, 4); updateOrClone(&(self->optFlds), values, 5); updateOrClone(&(self->bufTm), values, 6); updateOrClone(&(self->sqNum), values, 7); updateOrClone(&(self->trgOps), values, 8); updateOrClone(&(self->intgPd), values, 9); updateOrClone(&(self->gi), values, 10); if (rcbElementCount == 12) /* owner is optional */ updateOrClone(&(self->owner), values, 11); } return true; }