- fixed EditSG reservation

pull/6/head
Michael Zillgith 10 years ago
parent 9bba6ce44a
commit e61425f945

@ -1714,45 +1714,45 @@ mmsWriteHandler(void* parameter, MmsDomain* domain,
if (sg != NULL) { if (sg != NULL) {
uint32_t val = MmsValue_toUint32(value); uint32_t val = MmsValue_toUint32(value);
if (sg->editingClient == (ClientConnection) connection) { if ((sg->editingClient != NULL) && ( sg->editingClient != (ClientConnection) connection))
/* Edit SG was set by other client */
return DATA_ACCESS_ERROR_TEMPORARILY_UNAVAILABLE;
if (val == 0) { if (val == 0) {
unselectEditSettingGroup(sg); unselectEditSettingGroup(sg);
return DATA_ACCESS_ERROR_SUCCESS; return DATA_ACCESS_ERROR_SUCCESS;
} }
if ((val > 0) && (val <= sg->sgcb->numOfSGs)) { if ((val > 0) && (val <= sg->sgcb->numOfSGs)) {
if (sg->editSgChangedHandler != NULL) { if (sg->editSgChangedHandler != NULL) {
if (sg->editSgChangedHandler(sg->editSgChangedHandlerParameter, sg->sgcb, if (sg->editSgChangedHandler(sg->editSgChangedHandlerParameter, sg->sgcb,
(uint8_t) val, (ClientConnection) connection)) (uint8_t) val, (ClientConnection) connection))
{ {
sg->sgcb->editSG = val; sg->sgcb->editSG = val;
sg->editingClient = (ClientConnection) connection; sg->editingClient = (ClientConnection) connection;
sg->reservationTimeout = Hal_getTimeInMs() + (sg->sgcb->resvTms * 1000); sg->reservationTimeout = Hal_getTimeInMs() + (sg->sgcb->resvTms * 1000);
MmsValue* editSg = MmsValue_getElement(sg->sgcbMmsValues, 2); MmsValue* editSg = MmsValue_getElement(sg->sgcbMmsValues, 2);
MmsValue* resvTms = MmsValue_getElement(sg->sgcbMmsValues, 5); MmsValue* resvTms = MmsValue_getElement(sg->sgcbMmsValues, 5);
MmsValue_setUint16(resvTms, sg->sgcb->resvTms); MmsValue_setUint16(resvTms, sg->sgcb->resvTms);
MmsValue_setUint8(editSg, sg->sgcb->editSG); MmsValue_setUint8(editSg, sg->sgcb->editSG);
return DATA_ACCESS_ERROR_SUCCESS; return DATA_ACCESS_ERROR_SUCCESS;
}
else
return DATA_ACCESS_ERROR_OBJECT_ACCESS_DENIED;
} }
else else
return DATA_ACCESS_ERROR_OBJECT_ACCESS_DENIED; return DATA_ACCESS_ERROR_OBJECT_ACCESS_DENIED;
}
}
else else
return DATA_ACCESS_ERROR_OBJECT_VALUE_INVALID; return DATA_ACCESS_ERROR_OBJECT_ACCESS_DENIED;
}
else /* Edit SG was set by other client */ }
return DATA_ACCESS_ERROR_TEMPORARILY_UNAVAILABLE; else
return DATA_ACCESS_ERROR_OBJECT_VALUE_INVALID;
} }
} }
else if (strcmp(nameId, "CnfEdit") == 0) { else if (strcmp(nameId, "CnfEdit") == 0) {

Loading…
Cancel
Save