static int createVariableAccessAttributesResponse( MmsServerConnection* connection, char* domainId, char* nameId, int invokeId, ByteBuffer* response) { MmsDevice* device = MmsServer_getDevice(connection->server); MmsDomain* domain = MmsDevice_getDomain(device, domainId); if (domain == NULL) { if (DEBUG) printf("mms_server: domain %s not known\n", domainId); return -1; } MmsTypeSpecification* namedVariable = MmsDomain_getNamedVariable(domain, nameId); if (namedVariable == NULL) { if (DEBUG) printf("mms_server: named variable %s not known\n", nameId); return -1; } MmsPdu_t* mmsPdu = mmsServer_createConfirmedResponse(invokeId); mmsPdu->choice.confirmedResponsePdu.confirmedServiceResponse.present = ConfirmedServiceResponse_PR_getVariableAccessAttributes; GetVariableAccessAttributesResponse_t* getVarAccessAttr; getVarAccessAttr = &(mmsPdu->choice.confirmedResponsePdu. confirmedServiceResponse.choice.getVariableAccessAttributes); getVarAccessAttr->mmsDeletable = 0; createTypeSpecification(namedVariable, &getVarAccessAttr->typeSpecification); asn_enc_rval_t rval; rval = der_encode(&asn_DEF_MmsPdu, mmsPdu, mmsServer_write_out, (void*) response); if (DEBUG) xer_fprint(stdout, &asn_DEF_MmsPdu, mmsPdu); deleteVariableAccessAttributesResponse(getVarAccessAttr); asn_DEF_MmsPdu.free_struct(&asn_DEF_MmsPdu, mmsPdu, 0); return 0; }
static void createVariableAccessAttributesResponse( MmsServerConnection connection, char* domainId, char* nameId, int invokeId, ByteBuffer* response) { MmsDevice* device = MmsServer_getDevice(connection->server); MmsVariableSpecification* namedVariable = NULL; if (domainId != NULL) { MmsDomain* domain = MmsDevice_getDomain(device, domainId); if (domain == NULL) { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: domain %s not known\n", domainId); mmsServer_createConfirmedErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); goto exit_function; } namedVariable = MmsDomain_getNamedVariable(domain, nameId); } #if (CONFIG_MMS_SUPPORT_VMD_SCOPE_NAMED_VARIABLES == 1) else namedVariable = MmsDevice_getNamedVariable(device, nameId); #endif /* (CONFIG_MMS_SUPPORT_VMD_SCOPE_NAMED_VARIABLES == 1) */ if (namedVariable == NULL) { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: named variable %s not known\n", nameId); mmsServer_createConfirmedErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); goto exit_function; } MmsPdu_t* mmsPdu = mmsServer_createConfirmedResponse(invokeId); mmsPdu->choice.confirmedResponsePdu.confirmedServiceResponse.present = ConfirmedServiceResponse_PR_getVariableAccessAttributes; GetVariableAccessAttributesResponse_t* getVarAccessAttr; getVarAccessAttr = &(mmsPdu->choice.confirmedResponsePdu. confirmedServiceResponse.choice.getVariableAccessAttributes); getVarAccessAttr->mmsDeletable = 0; createTypeSpecification(namedVariable, &getVarAccessAttr->typeSpecification); asn_enc_rval_t rval = der_encode(&asn_DEF_MmsPdu, mmsPdu, mmsServer_write_out, (void*) response); if (rval.encoded == -1) { response->size = 0; if (DEBUG_MMS_SERVER) printf("MMS getVariableAccessAttributes: message to large! send error PDU!\n"); mmsServer_createConfirmedErrorPdu(invokeId, response, MMS_ERROR_SERVICE_OTHER); goto exit_function; } deleteVariableAccessAttributesResponse(getVarAccessAttr); asn_DEF_MmsPdu.free_struct(&asn_DEF_MmsPdu, mmsPdu, 0); exit_function: return; }