int
mmsServer_handleGetVariableAccessAttributesRequest(
		MmsServerConnection* connection,
		GetVariableAccessAttributesRequest_t* request,
		int invokeId,
		ByteBuffer* response)
{
	if (request->present == GetVariableAccessAttributesRequest_PR_name) {
		if (request->choice.name.present == ObjectName_PR_domainspecific) {
			Identifier_t domainId = request->choice.name.choice.domainspecific.domainId;
			Identifier_t nameId = request->choice.name.choice.domainspecific.itemId;

			char* domainIdStr = createStringFromBuffer(domainId.buf, domainId.size);
			char* nameIdStr = createStringFromBuffer(nameId.buf, nameId.size);
			if (DEBUG) printf("getVariableAccessAttributes domainId: %s nameId: %s\n", domainIdStr, nameIdStr);

			createVariableAccessAttributesResponse(connection, domainIdStr, nameIdStr, invokeId, response);

			free(domainIdStr);
			free(nameIdStr);
		}
		else {
			if (DEBUG) printf("GetVariableAccessAttributesRequest with name other than domainspecific is not supported!\n");
			return -1;
		}
	}
	else {
		if (DEBUG) printf("GetVariableAccessAttributesRequest with address not supported!\n");
		return -1;
	}

	return 0;
}
int
mmsServer_handleGetVariableAccessAttributesRequest(
		MmsServerConnection* connection,
		uint8_t* buffer, int bufPos, int maxBufPos,
		int invokeId,
		ByteBuffer* response)
{
	int retVal = 0;

	GetVariableAccessAttributesRequest_t* request = 0;

	asn_dec_rval_t rval; /* Decoder return value  */

	rval = ber_decode(NULL, &asn_DEF_GetVariableAccessAttributesRequest,
				(void**) &request, buffer + bufPos, maxBufPos - bufPos);

	if (request->present == GetVariableAccessAttributesRequest_PR_name) {
		if (request->choice.name.present == ObjectName_PR_domainspecific) {
			Identifier_t domainId = request->choice.name.choice.domainspecific.domainId;
			Identifier_t nameId = request->choice.name.choice.domainspecific.itemId;

			char* domainIdStr = createStringFromBuffer(domainId.buf, domainId.size);
			char* nameIdStr = createStringFromBuffer(nameId.buf, nameId.size);
			if (DEBUG) printf("getVariableAccessAttributes domainId: %s nameId: %s\n", domainIdStr, nameIdStr);

			createVariableAccessAttributesResponse(connection, domainIdStr, nameIdStr, invokeId, response);

			free(domainIdStr);
			free(nameIdStr);
		}
		else {
			if (DEBUG) printf("GetVariableAccessAttributesRequest with name other than domainspecific is not supported!\n");
			retVal = -1;
		}
	}
	else {
		if (DEBUG) printf("GetVariableAccessAttributesRequest with address not supported!\n");
		retVal = -1;
	}


	asn_DEF_GetVariableAccessAttributesRequest.free_struct(&asn_DEF_GetVariableAccessAttributesRequest, request, 0);

	return retVal;
}
int
mmsServer_handleGetVariableAccessAttributesRequest(
		MmsServerConnection connection,
		uint8_t* buffer, int bufPos, int maxBufPos,
		uint32_t invokeId,
		ByteBuffer* response)
{
	int retVal = 0;

	GetVariableAccessAttributesRequest_t* request = 0;

	asn_dec_rval_t rval; /* Decoder return value  */

	rval = ber_decode(NULL, &asn_DEF_GetVariableAccessAttributesRequest,
				(void**) &request, buffer + bufPos, maxBufPos - bufPos);

	if (rval.code == RC_OK) {
		if (request->present == GetVariableAccessAttributesRequest_PR_name) {
			if (request->choice.name.present == ObjectName_PR_domainspecific) {
				Identifier_t domainId = request->choice.name.choice.domainspecific.domainId;
				Identifier_t nameId = request->choice.name.choice.domainspecific.itemId;

				char* domainIdStr = createStringFromBuffer(domainId.buf, domainId.size);
				char* nameIdStr = createStringFromBuffer(nameId.buf, nameId.size);

				if (DEBUG_MMS_SERVER)
				    printf("MMS_SERVER: getVariableAccessAttributes domainId: %s nameId: %s\n", domainIdStr, nameIdStr);

				createVariableAccessAttributesResponse(connection, domainIdStr, nameIdStr, invokeId, response);

				GLOBAL_FREEMEM(domainIdStr);
				GLOBAL_FREEMEM(nameIdStr);
			}
#if (CONFIG_MMS_SUPPORT_VMD_SCOPE_NAMED_VARIABLES == 1)
			else if (request->choice.name.present == ObjectName_PR_vmdspecific) {
			    Identifier_t nameId = request->choice.name.choice.vmdspecific;

			    char* nameIdStr = createStringFromBuffer(nameId.buf, nameId.size);

			    if (DEBUG_MMS_SERVER) printf("MMS_SERVER: getVariableAccessAttributes (VMD specific) nameId: %s\n", nameIdStr);

			    createVariableAccessAttributesResponse(connection, NULL, nameIdStr, invokeId, response);

			    GLOBAL_FREEMEM(nameIdStr);
			}
#endif /* (CONFIG_MMS_SUPPORT_VMD_SCOPE_NAMED_VARIABLES == 1) */
			else {
				if (DEBUG_MMS_SERVER) printf("GetVariableAccessAttributesRequest with name other than domainspecific is not supported!\n");
				retVal = -1;
			}
		}
		else {
			if (DEBUG_MMS_SERVER) printf("GetVariableAccessAttributesRequest with address not supported!\n");
			retVal = -1;
		}
	}
	else {
		if (DEBUG_MMS_SERVER) printf("GetVariableAccessAttributesRequest parsing request failed!\n");
		retVal = -1;
	}

	asn_DEF_GetVariableAccessAttributesRequest.free_struct(&asn_DEF_GetVariableAccessAttributesRequest, request, 0);

	return retVal;
}