summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <quax@moccu.com>2015-10-23 16:52:00 +0200
committerDimitri Sokolyuk <quax@moccu.com>2015-10-23 16:52:00 +0200
commit4dcaf2a66a69eff4afeb24bccda039561a0028bc (patch)
tree04abc40b4d32ac6346b1ea24714646f2fdd02c6f
parent84dfc90b6b311fdef45755889ab335d4a30328a7 (diff)
Set
-rw-r--r--Remote-Operations-Generic-ROS-PDUs.erl936
-rw-r--r--Remote-Operations-Generic-ROS-PDUs.hrl14
2 files changed, 576 insertions, 374 deletions
diff --git a/Remote-Operations-Generic-ROS-PDUs.erl b/Remote-Operations-Generic-ROS-PDUs.erl
index 1e8eb90..81944d0 100644
--- a/Remote-Operations-Generic-ROS-PDUs.erl
+++ b/Remote-Operations-Generic-ROS-PDUs.erl
@@ -17,37 +17,55 @@
legacy_erlang_types/0]).
-export(['dialyzer-suppressions'/1]).
-export([
-'enc_ROS'/2,
-'enc_Invoke'/2,
-'enc_ReturnResult'/2,
-'enc_ReturnError'/2,
-'enc_Reject'/2,
-'enc_GeneralProblem'/2,
-'enc_InvokeProblem'/2,
-'enc_ReturnResultProblem'/2,
-'enc_ReturnErrorProblem'/2,
+'enc_Priority'/2,
+'enc_Code'/2,
+'enc_InvokeId'/2,
'enc_RejectProblem'/2,
-'enc_InvokeId'/2
+'enc_ReturnErrorProblem'/2,
+'enc_ReturnResultProblem'/2,
+'enc_InvokeProblem'/2,
+'enc_GeneralProblem'/2,
+'enc_Reject'/2,
+'enc_ReturnError'/2,
+'enc_ReturnResult'/2,
+'enc_Invoke'/2,
+'enc_ROS'/2
]).
-export([
-'dec_ROS'/2,
-'dec_Invoke'/2,
-'dec_ReturnResult'/2,
-'dec_ReturnError'/2,
-'dec_Reject'/2,
-'dec_GeneralProblem'/2,
-'dec_InvokeProblem'/2,
-'dec_ReturnResultProblem'/2,
-'dec_ReturnErrorProblem'/2,
+'dec_Priority'/2,
+'dec_Code'/2,
+'dec_InvokeId'/2,
'dec_RejectProblem'/2,
-'dec_InvokeId'/2
+'dec_ReturnErrorProblem'/2,
+'dec_ReturnResultProblem'/2,
+'dec_InvokeProblem'/2,
+'dec_GeneralProblem'/2,
+'dec_Reject'/2,
+'dec_ReturnError'/2,
+'dec_ReturnResult'/2,
+'dec_Invoke'/2,
+'dec_ROS'/2
]).
-export([
'noInvokeId'/0
]).
+-export([
+'enc_no-op'/3,
+'enc_refuse'/3,
+'enc_emptyUnbind'/3,
+'enc_emptyBind'/3
+]).
+
+-export([
+'dec_no-op'/3,
+'dec_refuse'/3,
+'dec_emptyUnbind'/3,
+'dec_emptyBind'/3
+]).
+
-export([info/0]).
@@ -87,31 +105,35 @@ try decode_disp(Type, element(1, ber_decode_nif(Data))) of
end
end.
-encode_disp('ROS',Data) -> 'enc_ROS'(Data);
-encode_disp('Invoke',Data) -> 'enc_Invoke'(Data);
-encode_disp('ReturnResult',Data) -> 'enc_ReturnResult'(Data);
-encode_disp('ReturnError',Data) -> 'enc_ReturnError'(Data);
-encode_disp('Reject',Data) -> 'enc_Reject'(Data);
-encode_disp('GeneralProblem',Data) -> 'enc_GeneralProblem'(Data);
-encode_disp('InvokeProblem',Data) -> 'enc_InvokeProblem'(Data);
-encode_disp('ReturnResultProblem',Data) -> 'enc_ReturnResultProblem'(Data);
-encode_disp('ReturnErrorProblem',Data) -> 'enc_ReturnErrorProblem'(Data);
-encode_disp('RejectProblem',Data) -> 'enc_RejectProblem'(Data);
+encode_disp('Priority',Data) -> 'enc_Priority'(Data);
+encode_disp('Code',Data) -> 'enc_Code'(Data);
encode_disp('InvokeId',Data) -> 'enc_InvokeId'(Data);
+encode_disp('RejectProblem',Data) -> 'enc_RejectProblem'(Data);
+encode_disp('ReturnErrorProblem',Data) -> 'enc_ReturnErrorProblem'(Data);
+encode_disp('ReturnResultProblem',Data) -> 'enc_ReturnResultProblem'(Data);
+encode_disp('InvokeProblem',Data) -> 'enc_InvokeProblem'(Data);
+encode_disp('GeneralProblem',Data) -> 'enc_GeneralProblem'(Data);
+encode_disp('Reject',Data) -> 'enc_Reject'(Data);
+encode_disp('ReturnError',Data) -> 'enc_ReturnError'(Data);
+encode_disp('ReturnResult',Data) -> 'enc_ReturnResult'(Data);
+encode_disp('Invoke',Data) -> 'enc_Invoke'(Data);
+encode_disp('ROS',Data) -> 'enc_ROS'(Data);
encode_disp(Type,_Data) -> exit({error,{asn1,{undefined_type,Type}}}).
-decode_disp('ROS',Data) -> 'dec_ROS'(Data);
-decode_disp('Invoke',Data) -> 'dec_Invoke'(Data);
-decode_disp('ReturnResult',Data) -> 'dec_ReturnResult'(Data);
-decode_disp('ReturnError',Data) -> 'dec_ReturnError'(Data);
-decode_disp('Reject',Data) -> 'dec_Reject'(Data);
-decode_disp('GeneralProblem',Data) -> 'dec_GeneralProblem'(Data);
-decode_disp('InvokeProblem',Data) -> 'dec_InvokeProblem'(Data);
-decode_disp('ReturnResultProblem',Data) -> 'dec_ReturnResultProblem'(Data);
-decode_disp('ReturnErrorProblem',Data) -> 'dec_ReturnErrorProblem'(Data);
-decode_disp('RejectProblem',Data) -> 'dec_RejectProblem'(Data);
+decode_disp('Priority',Data) -> 'dec_Priority'(Data);
+decode_disp('Code',Data) -> 'dec_Code'(Data);
decode_disp('InvokeId',Data) -> 'dec_InvokeId'(Data);
+decode_disp('RejectProblem',Data) -> 'dec_RejectProblem'(Data);
+decode_disp('ReturnErrorProblem',Data) -> 'dec_ReturnErrorProblem'(Data);
+decode_disp('ReturnResultProblem',Data) -> 'dec_ReturnResultProblem'(Data);
+decode_disp('InvokeProblem',Data) -> 'dec_InvokeProblem'(Data);
+decode_disp('GeneralProblem',Data) -> 'dec_GeneralProblem'(Data);
+decode_disp('Reject',Data) -> 'dec_Reject'(Data);
+decode_disp('ReturnError',Data) -> 'dec_ReturnError'(Data);
+decode_disp('ReturnResult',Data) -> 'dec_ReturnResult'(Data);
+decode_disp('Invoke',Data) -> 'dec_Invoke'(Data);
+decode_disp('ROS',Data) -> 'dec_ROS'(Data);
decode_disp(Type,_Data) -> exit({error,{asn1,{undefined_type,Type}}}).
@@ -132,21 +154,42 @@ info() ->
%%================================
-%% ROS
+%% Priority
%%================================
-'enc_ROS'(Val) ->
- 'enc_ROS'(Val, []).
+'enc_Priority'(Val) ->
+ 'enc_Priority'(Val, [<<2>>]).
-'enc_ROS'(Val, TagIn) ->
+'enc_Priority'(Val, TagIn) ->
+encode_integer(Val, TagIn).
+
+
+'dec_Priority'(Tlv) ->
+ 'dec_Priority'(Tlv, [2]).
+
+'dec_Priority'(Tlv, TagIn) ->
+begin
+Val1 = decode_integer(Tlv, TagIn),
+if 0 =< Val1, Val1 =< 'MAX' ->
+Val1;
+true ->
+exit({error,{asn1,bad_range}})
+end
+end.
+
+
+
+%%================================
+%% Code
+%%================================
+'enc_Code'(Val) ->
+ 'enc_Code'(Val, []).
+
+'enc_Code'(Val, TagIn) ->
{EncBytes,EncLen} = case element(1,Val) of
- invoke ->
- 'enc_Invoke'(element(2,Val), [<<161>>]);
- returnResult ->
- 'enc_ReturnResult'(element(2,Val), [<<162>>]);
- returnError ->
- 'enc_ReturnError'(element(2,Val), [<<163>>]);
- reject ->
- 'enc_Reject'(element(2,Val), [<<164>>]);
+ local ->
+ encode_integer(element(2,Val), [<<2>>]);
+ global ->
+ encode_object_identifier(element(2,Val), [<<6>>]);
Else ->
exit({error,{asn1,{invalid_choice_type,Else}}})
end,
@@ -156,31 +199,64 @@ encode_tags(TagIn, EncBytes, EncLen).
-'dec_ROS'(Tlv) ->
- 'dec_ROS'(Tlv, []).
+'dec_Code'(Tlv) ->
+ 'dec_Code'(Tlv, []).
-'dec_ROS'(Tlv, TagIn) ->
+'dec_Code'(Tlv, TagIn) ->
Tlv1 = match_tags(Tlv, TagIn),
case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of
-%% 'invoke'
- {131073, V1} ->
- {invoke, 'dec_Invoke'(V1, [])};
+%% 'local'
+ {2, V1} ->
+ {local, decode_integer(V1, [])};
-%% 'returnResult'
- {131074, V1} ->
- {returnResult, 'dec_ReturnResult'(V1, [])};
+%% 'global'
+ {6, V1} ->
+ {global, decode_object_identifier(V1, [])};
+
+ Else ->
+ exit({error,{asn1,{invalid_choice_tag,Else}}})
+ end
+.
-%% 'returnError'
- {131075, V1} ->
- {returnError, 'dec_ReturnError'(V1, [])};
+%%================================
+%% InvokeId
+%%================================
+'enc_InvokeId'(Val) ->
+ 'enc_InvokeId'(Val, []).
+
+'enc_InvokeId'(Val, TagIn) ->
+ {EncBytes,EncLen} = case element(1,Val) of
+ present ->
+ encode_integer(element(2,Val), [<<2>>]);
+ absent ->
+ encode_null(element(2,Val), [<<5>>]);
+ Else ->
+ exit({error,{asn1,{invalid_choice_type,Else}}})
+ end,
+
+encode_tags(TagIn, EncBytes, EncLen).
+
-%% 'reject'
- {131076, V1} ->
- {reject, 'dec_Reject'(V1, [])};
+
+'dec_InvokeId'(Tlv) ->
+ 'dec_InvokeId'(Tlv, []).
+
+'dec_InvokeId'(Tlv, TagIn) ->
+Tlv1 = match_tags(Tlv, TagIn),
+case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of
+
+%% 'present'
+ {2, V1} ->
+ {present, decode_integer(V1, [])};
+
+
+%% 'absent'
+ {5, V1} ->
+ {absent, decode_null(V1, [])};
Else ->
exit({error,{asn1,{invalid_choice_tag,Else}}})
@@ -189,57 +265,153 @@ case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of
%%================================
-%% Invoke
+%% RejectProblem
%%================================
-'enc_Invoke'(Val) ->
- 'enc_Invoke'(Val, [<<48>>]).
+'enc_RejectProblem'(Val) ->
+ 'enc_RejectProblem'(Val, [<<2>>]).
-'enc_Invoke'(Val, TagIn) ->
-{_,Cindex1, Cindex2, Cindex3, Cindex4} = Val,
+'enc_RejectProblem'(Val, TagIn) ->
+encode_integer(Val, [{'general-unrecognisedPDU',0},{'general-mistypedPDU',1},{'general-badlyStructuredPDU',2},{'invoke-duplicateInvocation',10},{'invoke-unrecognisedOperation',11},{'invoke-mistypedArgument',12},{'invoke-resourceLimitation',13},{'invoke-releaseInProgress',14},{'invoke-unrecognisedLinkedId',15},{'invoke-linkedResponseUnexpected',16},{'invoke-unexpectedLinkedOperation',17},{'returnResult-unrecognisedInvocation',20},{'returnResult-resultResponseUnexpected',21},{'returnResult-mistypedResult',22},{'returnError-unrecognisedInvocation',30},{'returnError-errorResponseUnexpected',31},{'returnError-unrecognisedError',32},{'returnError-unexpectedError',33},{'returnError-mistypedParameter',34}], TagIn).
-%%-------------------------------------------------
-%% attribute invokeId(1) External Remote-Operations-Generic-ROS-PDUs:InvokeId
-%%-------------------------------------------------
- {EncBytes1,EncLen1} = 'enc_InvokeId'(Cindex1, []),
-%%-------------------------------------------------
-%% attribute linkedId(2) with type CHOICE OPTIONAL
-%%-------------------------------------------------
- {EncBytes2,EncLen2} = case Cindex2 of
- asn1_NOVALUE -> {<<>>,0};
- _ ->
- 'enc_Invoke_linkedId'(Cindex2, [])
- end,
+'dec_RejectProblem'(Tlv) ->
+ 'dec_RejectProblem'(Tlv, [2]).
+
+'dec_RejectProblem'(Tlv, TagIn) ->
+begin
+Val1 = decode_integer(Tlv, TagIn),
+number2name(Val1, [{'general-unrecognisedPDU',0},{'general-mistypedPDU',1},{'general-badlyStructuredPDU',2},{'invoke-duplicateInvocation',10},{'invoke-unrecognisedOperation',11},{'invoke-mistypedArgument',12},{'invoke-resourceLimitation',13},{'invoke-releaseInProgress',14},{'invoke-unrecognisedLinkedId',15},{'invoke-linkedResponseUnexpected',16},{'invoke-unexpectedLinkedOperation',17},{'returnResult-unrecognisedInvocation',20},{'returnResult-resultResponseUnexpected',21},{'returnResult-mistypedResult',22},{'returnError-unrecognisedInvocation',30},{'returnError-errorResponseUnexpected',31},{'returnError-unrecognisedError',32},{'returnError-unexpectedError',33},{'returnError-mistypedParameter',34}])
+end
+.
+
+
+
+%%================================
+%% ReturnErrorProblem
+%%================================
+'enc_ReturnErrorProblem'(Val) ->
+ 'enc_ReturnErrorProblem'(Val, [<<2>>]).
+
+'enc_ReturnErrorProblem'(Val, TagIn) ->
+encode_integer(Val, [{unrecognisedInvocation,0},{errorResponseUnexpected,1},{unrecognisedError,2},{unexpectedError,3},{mistypedParameter,4}], TagIn).
+
+
+'dec_ReturnErrorProblem'(Tlv) ->
+ 'dec_ReturnErrorProblem'(Tlv, [2]).
+
+'dec_ReturnErrorProblem'(Tlv, TagIn) ->
+begin
+Val1 = decode_integer(Tlv, TagIn),
+number2name(Val1, [{unrecognisedInvocation,0},{errorResponseUnexpected,1},{unrecognisedError,2},{unexpectedError,3},{mistypedParameter,4}])
+end
+.
+
+
+
+%%================================
+%% ReturnResultProblem
+%%================================
+'enc_ReturnResultProblem'(Val) ->
+ 'enc_ReturnResultProblem'(Val, [<<2>>]).
+
+'enc_ReturnResultProblem'(Val, TagIn) ->
+encode_integer(Val, [{unrecognisedInvocation,0},{resultResponseUnexpected,1},{mistypedResult,2}], TagIn).
+
+
+'dec_ReturnResultProblem'(Tlv) ->
+ 'dec_ReturnResultProblem'(Tlv, [2]).
+
+'dec_ReturnResultProblem'(Tlv, TagIn) ->
+begin
+Val1 = decode_integer(Tlv, TagIn),
+number2name(Val1, [{unrecognisedInvocation,0},{resultResponseUnexpected,1},{mistypedResult,2}])
+end
+.
+
+
+
+%%================================
+%% InvokeProblem
+%%================================
+'enc_InvokeProblem'(Val) ->
+ 'enc_InvokeProblem'(Val, [<<2>>]).
+
+'enc_InvokeProblem'(Val, TagIn) ->
+encode_integer(Val, [{duplicateInvocation,0},{unrecognisedOperation,1},{mistypedArgument,2},{resourceLimitation,3},{releaseInProgress,4},{unrecognisedLinkedId,5},{linkedResponseUnexpected,6},{unexpectedLinkedOperation,7}], TagIn).
+
+
+'dec_InvokeProblem'(Tlv) ->
+ 'dec_InvokeProblem'(Tlv, [2]).
+
+'dec_InvokeProblem'(Tlv, TagIn) ->
+begin
+Val1 = decode_integer(Tlv, TagIn),
+number2name(Val1, [{duplicateInvocation,0},{unrecognisedOperation,1},{mistypedArgument,2},{resourceLimitation,3},{releaseInProgress,4},{unrecognisedLinkedId,5},{linkedResponseUnexpected,6},{unexpectedLinkedOperation,7}])
+end
+.
+
+
+
+%%================================
+%% GeneralProblem
+%%================================
+'enc_GeneralProblem'(Val) ->
+ 'enc_GeneralProblem'(Val, [<<2>>]).
+
+'enc_GeneralProblem'(Val, TagIn) ->
+encode_integer(Val, [{unrecognisedPDU,0},{mistypedPDU,1},{badlyStructuredPDU,2}], TagIn).
+
+
+'dec_GeneralProblem'(Tlv) ->
+ 'dec_GeneralProblem'(Tlv, [2]).
+
+'dec_GeneralProblem'(Tlv, TagIn) ->
+begin
+Val1 = decode_integer(Tlv, TagIn),
+number2name(Val1, [{unrecognisedPDU,0},{mistypedPDU,1},{badlyStructuredPDU,2}])
+end
+.
+
+
+
+%%================================
+%% Reject
+%%================================
+'enc_Reject'(Val) ->
+ 'enc_Reject'(Val, [<<48>>]).
+
+'enc_Reject'(Val, TagIn) ->
+{_,Cindex1, Cindex2} = Val,
%%-------------------------------------------------
-%% attribute opcode(3) External Remote-Operations-Information-Objects:Code
+%% attribute invokeId(1) External Remote-Operations-Generic-ROS-PDUs:InvokeId
%%-------------------------------------------------
- {EncBytes3,EncLen3} = 'Remote-Operations-Information-Objects':'enc_Code'(Cindex3, []),
+ {EncBytes1,EncLen1} = 'enc_InvokeId'(Cindex1, []),
%%-------------------------------------------------
-%% attribute argument(4) with type ASN1_OPEN_TYPE OPTIONAL
+%% attribute problem(2) with type CHOICE
%%-------------------------------------------------
- {EncBytes4,EncLen4} = case Cindex4 of
- asn1_NOVALUE -> {<<>>,0};
- _ ->
- encode_open_type(Cindex4, [])
- end,
+ {EncBytes2,EncLen2} = 'enc_Reject_problem'(Cindex2, []),
- BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4],
-LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4,
+ BytesSoFar = [EncBytes1, EncBytes2],
+LenSoFar = EncLen1 + EncLen2,
encode_tags(TagIn, BytesSoFar, LenSoFar).
%%================================
-%% Invoke_linkedId
+%% Reject_problem
%%================================
-'enc_Invoke_linkedId'(Val, TagIn) ->
+'enc_Reject_problem'(Val, TagIn) ->
{EncBytes,EncLen} = case element(1,Val) of
- present ->
- encode_integer(element(2,Val), [<<128>>]);
- absent ->
- encode_null(element(2,Val), [<<129>>]);
+ general ->
+ encode_integer(element(2,Val), [{unrecognisedPDU,0},{mistypedPDU,1},{badlyStructuredPDU,2}], [<<128>>]);
+ invoke ->
+ encode_integer(element(2,Val), [{duplicateInvocation,0},{unrecognisedOperation,1},{mistypedArgument,2},{resourceLimitation,3},{releaseInProgress,4},{unrecognisedLinkedId,5},{linkedResponseUnexpected,6},{unexpectedLinkedOperation,7}], [<<129>>]);
+ returnResult ->
+ encode_integer(element(2,Val), [{unrecognisedInvocation,0},{resultResponseUnexpected,1},{mistypedResult,2}], [<<130>>]);
+ returnError ->
+ encode_integer(element(2,Val), [{unrecognisedInvocation,0},{errorResponseUnexpected,1},{unrecognisedError,2},{unexpectedError,3},{mistypedParameter,4}], [<<131>>]);
Else ->
exit({error,{asn1,{invalid_choice_type,Else}}})
end,
@@ -249,10 +421,10 @@ encode_tags(TagIn, EncBytes, EncLen).
-'dec_Invoke'(Tlv) ->
- 'dec_Invoke'(Tlv, [16]).
+'dec_Reject'(Tlv) ->
+ 'dec_Reject'(Tlv, [16]).
-'dec_Invoke'(Tlv, TagIn) ->
+'dec_Reject'(Tlv, TagIn) ->
%%-------------------------------------------------
%% decode tag and length
%%-------------------------------------------------
@@ -265,50 +437,54 @@ Tlv1 = match_tags(Tlv, TagIn),
Term1 = 'dec_InvokeId'(V1, []),
%%-------------------------------------------------
-%% attribute linkedId(2) with type CHOICE OPTIONAL
-%%-------------------------------------------------
-{Term2,Tlv3} = case Tlv2 of
-[V2 = {131072,_}|TempTlv3] ->
- {'dec_Invoke_linkedId'(V2, []), TempTlv3};
-[V2 = {131073,_}|TempTlv3] ->
- {'dec_Invoke_linkedId'(V2, []), TempTlv3};
- _ ->
- { asn1_NOVALUE, Tlv2}
-end,
-
-%%-------------------------------------------------
-%% attribute opcode(3) External Remote-Operations-Information-Objects:Code
-%%-------------------------------------------------
-[V3|Tlv4] = Tlv3,
-Term3 = 'Remote-Operations-Information-Objects':'dec_Code'(V3, []),
-
-%%-------------------------------------------------
-%% attribute argument(4) with type ASN1_OPEN_TYPE OPTIONAL
+%% attribute problem(2) with type CHOICE
%%-------------------------------------------------
-{Term4,Tlv5} = case Tlv4 of
-[V4|TempTlv5] ->
- {decode_open_type_as_binary(V4, []), TempTlv5};
- _ ->
- { asn1_NOVALUE, Tlv4}
-end,
+[V2|Tlv3] = Tlv2,
+Term2 = 'dec_Reject_problem'(V2, []),
-case Tlv5 of
-[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv5}}}) % extra fields not allowed
+case Tlv3 of
+[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed
end,
- {'Invoke', Term1, Term2, Term3, Term4}.
+ {'Reject', Term1, Term2}.
-'dec_Invoke_linkedId'(Tlv, TagIn) ->
+'dec_Reject_problem'(Tlv, TagIn) ->
Tlv1 = match_tags(Tlv, TagIn),
case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of
-%% 'present'
+%% 'general'
{131072, V1} ->
- {present, decode_integer(V1, [])};
+ {general, begin
+Val1 = decode_integer(V1, []),
+number2name(Val1, [{unrecognisedPDU,0},{mistypedPDU,1},{badlyStructuredPDU,2}])
+end
+};
-%% 'absent'
+%% 'invoke'
{131073, V1} ->
- {absent, decode_null(V1, [])};
+ {invoke, begin
+Val2 = decode_integer(V1, []),
+number2name(Val2, [{duplicateInvocation,0},{unrecognisedOperation,1},{mistypedArgument,2},{resourceLimitation,3},{releaseInProgress,4},{unrecognisedLinkedId,5},{linkedResponseUnexpected,6},{unexpectedLinkedOperation,7}])
+end
+};
+
+
+%% 'returnResult'
+ {131074, V1} ->
+ {returnResult, begin
+Val3 = decode_integer(V1, []),
+number2name(Val3, [{unrecognisedInvocation,0},{resultResponseUnexpected,1},{mistypedResult,2}])
+end
+};
+
+
+%% 'returnError'
+ {131075, V1} ->
+ {returnError, begin
+Val4 = decode_integer(V1, []),
+number2name(Val4, [{unrecognisedInvocation,0},{errorResponseUnexpected,1},{unrecognisedError,2},{unexpectedError,3},{mistypedParameter,4}])
+end
+};
Else ->
exit({error,{asn1,{invalid_choice_tag,Else}}})
@@ -317,6 +493,77 @@ case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of
%%================================
+%% ReturnError
+%%================================
+'enc_ReturnError'(Val) ->
+ 'enc_ReturnError'(Val, [<<48>>]).
+
+'enc_ReturnError'(Val, TagIn) ->
+{_,Cindex1, Cindex2, Cindex3} = Val,
+
+%%-------------------------------------------------
+%% attribute invokeId(1) External Remote-Operations-Generic-ROS-PDUs:InvokeId
+%%-------------------------------------------------
+ {EncBytes1,EncLen1} = 'enc_InvokeId'(Cindex1, []),
+
+%%-------------------------------------------------
+%% attribute errcode(2) External Remote-Operations-Generic-ROS-PDUs:Code
+%%-------------------------------------------------
+ {EncBytes2,EncLen2} = 'enc_Code'(Cindex2, []),
+
+%%-------------------------------------------------
+%% attribute parameter(3) with type ASN1_OPEN_TYPE OPTIONAL
+%%-------------------------------------------------
+ {EncBytes3,EncLen3} = case Cindex3 of
+ asn1_NOVALUE -> {<<>>,0};
+ _ ->
+ encode_open_type(Cindex3, [])
+ end,
+
+ BytesSoFar = [EncBytes1, EncBytes2, EncBytes3],
+LenSoFar = EncLen1 + EncLen2 + EncLen3,
+encode_tags(TagIn, BytesSoFar, LenSoFar).
+
+
+'dec_ReturnError'(Tlv) ->
+ 'dec_ReturnError'(Tlv, [16]).
+
+'dec_ReturnError'(Tlv, TagIn) ->
+ %%-------------------------------------------------
+ %% decode tag and length
+ %%-------------------------------------------------
+Tlv1 = match_tags(Tlv, TagIn),
+
+%%-------------------------------------------------
+%% attribute invokeId(1) External Remote-Operations-Generic-ROS-PDUs:InvokeId
+%%-------------------------------------------------
+[V1|Tlv2] = Tlv1,
+Term1 = 'dec_InvokeId'(V1, []),
+
+%%-------------------------------------------------
+%% attribute errcode(2) External Remote-Operations-Generic-ROS-PDUs:Code
+%%-------------------------------------------------
+[V2|Tlv3] = Tlv2,
+Term2 = 'dec_Code'(V2, []),
+
+%%-------------------------------------------------
+%% attribute parameter(3) with type ASN1_OPEN_TYPE OPTIONAL
+%%-------------------------------------------------
+{Term3,Tlv4} = case Tlv3 of
+[V3|TempTlv4] ->
+ {decode_open_type_as_binary(V3, []), TempTlv4};
+ _ ->
+ { asn1_NOVALUE, Tlv3}
+end,
+
+case Tlv4 of
+[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed
+end,
+ {'ReturnError', Term1, Term2, Term3}.
+
+
+
+%%================================
%% ReturnResult
%%================================
'enc_ReturnResult'(Val) ->
@@ -352,9 +599,9 @@ encode_tags(TagIn, BytesSoFar, LenSoFar).
{_,Cindex1, Cindex2} = Val,
%%-------------------------------------------------
-%% attribute opcode(1) External Remote-Operations-Information-Objects:Code
+%% attribute opcode(1) External Remote-Operations-Generic-ROS-PDUs:Code
%%-------------------------------------------------
- {EncBytes1,EncLen1} = 'Remote-Operations-Information-Objects':'enc_Code'(Cindex1, []),
+ {EncBytes1,EncLen1} = 'enc_Code'(Cindex1, []),
%%-------------------------------------------------
%% attribute result(2) with type ASN1_OPEN_TYPE
@@ -403,10 +650,10 @@ end,
Tlv1 = match_tags(Tlv, TagIn),
%%-------------------------------------------------
-%% attribute opcode(1) External Remote-Operations-Information-Objects:Code
+%% attribute opcode(1) External Remote-Operations-Generic-ROS-PDUs:Code
%%-------------------------------------------------
[V1|Tlv2] = Tlv1,
-Term1 = 'Remote-Operations-Information-Objects':'dec_Code'(V1, []),
+Term1 = 'dec_Code'(V1, []),
%%-------------------------------------------------
%% attribute result(2) with type ASN1_OPEN_TYPE
@@ -422,13 +669,13 @@ end,
%%================================
-%% ReturnError
+%% Invoke
%%================================
-'enc_ReturnError'(Val) ->
- 'enc_ReturnError'(Val, [<<48>>]).
+'enc_Invoke'(Val) ->
+ 'enc_Invoke'(Val, [<<48>>]).
-'enc_ReturnError'(Val, TagIn) ->
-{_,Cindex1, Cindex2, Cindex3} = Val,
+'enc_Invoke'(Val, TagIn) ->
+{_,Cindex1, Cindex2, Cindex3, Cindex4} = Val,
%%-------------------------------------------------
%% attribute invokeId(1) External Remote-Operations-Generic-ROS-PDUs:InvokeId
@@ -436,100 +683,43 @@ end,
{EncBytes1,EncLen1} = 'enc_InvokeId'(Cindex1, []),
%%-------------------------------------------------
-%% attribute errcode(2) External Remote-Operations-Information-Objects:Code
-%%-------------------------------------------------
- {EncBytes2,EncLen2} = 'Remote-Operations-Information-Objects':'enc_Code'(Cindex2, []),
-
-%%-------------------------------------------------
-%% attribute parameter(3) with type ASN1_OPEN_TYPE OPTIONAL
+%% attribute linkedId(2) with type CHOICE OPTIONAL
%%-------------------------------------------------
- {EncBytes3,EncLen3} = case Cindex3 of
+ {EncBytes2,EncLen2} = case Cindex2 of
asn1_NOVALUE -> {<<>>,0};
_ ->
- encode_open_type(Cindex3, [])
+ 'enc_Invoke_linkedId'(Cindex2, [])
end,
- BytesSoFar = [EncBytes1, EncBytes2, EncBytes3],
-LenSoFar = EncLen1 + EncLen2 + EncLen3,
-encode_tags(TagIn, BytesSoFar, LenSoFar).
-
-
-'dec_ReturnError'(Tlv) ->
- 'dec_ReturnError'(Tlv, [16]).
-
-'dec_ReturnError'(Tlv, TagIn) ->
- %%-------------------------------------------------
- %% decode tag and length
- %%-------------------------------------------------
-Tlv1 = match_tags(Tlv, TagIn),
-
-%%-------------------------------------------------
-%% attribute invokeId(1) External Remote-Operations-Generic-ROS-PDUs:InvokeId
-%%-------------------------------------------------
-[V1|Tlv2] = Tlv1,
-Term1 = 'dec_InvokeId'(V1, []),
-
-%%-------------------------------------------------
-%% attribute errcode(2) External Remote-Operations-Information-Objects:Code
-%%-------------------------------------------------
-[V2|Tlv3] = Tlv2,
-Term2 = 'Remote-Operations-Information-Objects':'dec_Code'(V2, []),
-
-%%-------------------------------------------------
-%% attribute parameter(3) with type ASN1_OPEN_TYPE OPTIONAL
-%%-------------------------------------------------
-{Term3,Tlv4} = case Tlv3 of
-[V3|TempTlv4] ->
- {decode_open_type_as_binary(V3, []), TempTlv4};
- _ ->
- { asn1_NOVALUE, Tlv3}
-end,
-
-case Tlv4 of
-[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed
-end,
- {'ReturnError', Term1, Term2, Term3}.
-
-
-
-%%================================
-%% Reject
-%%================================
-'enc_Reject'(Val) ->
- 'enc_Reject'(Val, [<<48>>]).
-
-'enc_Reject'(Val, TagIn) ->
-{_,Cindex1, Cindex2} = Val,
-
%%-------------------------------------------------
-%% attribute invokeId(1) External Remote-Operations-Generic-ROS-PDUs:InvokeId
+%% attribute opcode(3) External Remote-Operations-Generic-ROS-PDUs:Code
%%-------------------------------------------------
- {EncBytes1,EncLen1} = 'enc_InvokeId'(Cindex1, []),
+ {EncBytes3,EncLen3} = 'enc_Code'(Cindex3, []),
%%-------------------------------------------------
-%% attribute problem(2) with type CHOICE
+%% attribute argument(4) with type ASN1_OPEN_TYPE OPTIONAL
%%-------------------------------------------------
- {EncBytes2,EncLen2} = 'enc_Reject_problem'(Cindex2, []),
+ {EncBytes4,EncLen4} = case Cindex4 of
+ asn1_NOVALUE -> {<<>>,0};
+ _ ->
+ encode_open_type(Cindex4, [])
+ end,
- BytesSoFar = [EncBytes1, EncBytes2],
-LenSoFar = EncLen1 + EncLen2,
+ BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4],
+LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4,
encode_tags(TagIn, BytesSoFar, LenSoFar).
%%================================
-%% Reject_problem
+%% Invoke_linkedId
%%================================
-'enc_Reject_problem'(Val, TagIn) ->
+'enc_Invoke_linkedId'(Val, TagIn) ->
{EncBytes,EncLen} = case element(1,Val) of
- general ->
- encode_integer(element(2,Val), [{unrecognisedPDU,0},{mistypedPDU,1},{badlyStructuredPDU,2}], [<<128>>]);
- invoke ->
- encode_integer(element(2,Val), [{duplicateInvocation,0},{unrecognisedOperation,1},{mistypedArgument,2},{resourceLimitation,3},{releaseInProgress,4},{unrecognisedLinkedId,5},{linkedResponseUnexpected,6},{unexpectedLinkedOperation,7}], [<<129>>]);
- returnResult ->
- encode_integer(element(2,Val), [{unrecognisedInvocation,0},{resultResponseUnexpected,1},{mistypedResult,2}], [<<130>>]);
- returnError ->
- encode_integer(element(2,Val), [{unrecognisedInvocation,0},{errorResponseUnexpected,1},{unrecognisedError,2},{unexpectedError,3},{mistypedParameter,4}], [<<131>>]);
+ present ->
+ encode_integer(element(2,Val), [<<128>>]);
+ absent ->
+ encode_null(element(2,Val), [<<129>>]);
Else ->
exit({error,{asn1,{invalid_choice_type,Else}}})
end,
@@ -539,10 +729,10 @@ encode_tags(TagIn, EncBytes, EncLen).
-'dec_Reject'(Tlv) ->
- 'dec_Reject'(Tlv, [16]).
+'dec_Invoke'(Tlv) ->
+ 'dec_Invoke'(Tlv, [16]).
-'dec_Reject'(Tlv, TagIn) ->
+'dec_Invoke'(Tlv, TagIn) ->
%%-------------------------------------------------
%% decode tag and length
%%-------------------------------------------------
@@ -555,54 +745,50 @@ Tlv1 = match_tags(Tlv, TagIn),
Term1 = 'dec_InvokeId'(V1, []),
%%-------------------------------------------------
-%% attribute problem(2) with type CHOICE
+%% attribute linkedId(2) with type CHOICE OPTIONAL
%%-------------------------------------------------
-[V2|Tlv3] = Tlv2,
-Term2 = 'dec_Reject_problem'(V2, []),
+{Term2,Tlv3} = case Tlv2 of
+[V2 = {131072,_}|TempTlv3] ->
+ {'dec_Invoke_linkedId'(V2, []), TempTlv3};
+[V2 = {131073,_}|TempTlv3] ->
+ {'dec_Invoke_linkedId'(V2, []), TempTlv3};
+ _ ->
+ { asn1_NOVALUE, Tlv2}
+end,
-case Tlv3 of
-[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed
+%%-------------------------------------------------
+%% attribute opcode(3) External Remote-Operations-Generic-ROS-PDUs:Code
+%%-------------------------------------------------
+[V3|Tlv4] = Tlv3,
+Term3 = 'dec_Code'(V3, []),
+
+%%-------------------------------------------------
+%% attribute argument(4) with type ASN1_OPEN_TYPE OPTIONAL
+%%-------------------------------------------------
+{Term4,Tlv5} = case Tlv4 of
+[V4|TempTlv5] ->
+ {decode_open_type_as_binary(V4, []), TempTlv5};
+ _ ->
+ { asn1_NOVALUE, Tlv4}
end,
- {'Reject', Term1, Term2}.
-'dec_Reject_problem'(Tlv, TagIn) ->
+case Tlv5 of
+[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv5}}}) % extra fields not allowed
+end,
+ {'Invoke', Term1, Term2, Term3, Term4}.
+
+'dec_Invoke_linkedId'(Tlv, TagIn) ->
Tlv1 = match_tags(Tlv, TagIn),
case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of
-%% 'general'
+%% 'present'
{131072, V1} ->
- {general, begin
-Val1 = decode_integer(V1, []),
-number2name(Val1, [{unrecognisedPDU,0},{mistypedPDU,1},{badlyStructuredPDU,2}])
-end
-};
+ {present, decode_integer(V1, [])};
-%% 'invoke'
+%% 'absent'
{131073, V1} ->
- {invoke, begin
-Val2 = decode_integer(V1, []),
-number2name(Val2, [{duplicateInvocation,0},{unrecognisedOperation,1},{mistypedArgument,2},{resourceLimitation,3},{releaseInProgress,4},{unrecognisedLinkedId,5},{linkedResponseUnexpected,6},{unexpectedLinkedOperation,7}])
-end
-};
-
-
-%% 'returnResult'
- {131074, V1} ->
- {returnResult, begin
-Val3 = decode_integer(V1, []),
-number2name(Val3, [{unrecognisedInvocation,0},{resultResponseUnexpected,1},{mistypedResult,2}])
-end
-};
-
-
-%% 'returnError'
- {131075, V1} ->
- {returnError, begin
-Val4 = decode_integer(V1, []),
-number2name(Val4, [{unrecognisedInvocation,0},{errorResponseUnexpected,1},{unrecognisedError,2},{unexpectedError,3},{mistypedParameter,4}])
-end
-};
+ {absent, decode_null(V1, [])};
Else ->
exit({error,{asn1,{invalid_choice_tag,Else}}})
@@ -611,158 +797,126 @@ end
%%================================
-%% GeneralProblem
+%% ROS
%%================================
-'enc_GeneralProblem'(Val) ->
- 'enc_GeneralProblem'(Val, [<<2>>]).
-
-'enc_GeneralProblem'(Val, TagIn) ->
-encode_integer(Val, [{unrecognisedPDU,0},{mistypedPDU,1},{badlyStructuredPDU,2}], TagIn).
-
-
-'dec_GeneralProblem'(Tlv) ->
- 'dec_GeneralProblem'(Tlv, [2]).
+'enc_ROS'(Val) ->
+ 'enc_ROS'(Val, []).
-'dec_GeneralProblem'(Tlv, TagIn) ->
-begin
-Val1 = decode_integer(Tlv, TagIn),
-number2name(Val1, [{unrecognisedPDU,0},{mistypedPDU,1},{badlyStructuredPDU,2}])
-end
-.
+'enc_ROS'(Val, TagIn) ->
+ {EncBytes,EncLen} = case element(1,Val) of
+ invoke ->
+ 'enc_Invoke'(element(2,Val), [<<161>>]);
+ returnResult ->
+ 'enc_ReturnResult'(element(2,Val), [<<162>>]);
+ returnError ->
+ 'enc_ReturnError'(element(2,Val), [<<163>>]);
+ reject ->
+ 'enc_Reject'(element(2,Val), [<<164>>]);
+ Else ->
+ exit({error,{asn1,{invalid_choice_type,Else}}})
+ end,
+encode_tags(TagIn, EncBytes, EncLen).
-%%================================
-%% InvokeProblem
-%%================================
-'enc_InvokeProblem'(Val) ->
- 'enc_InvokeProblem'(Val, [<<2>>]).
-'enc_InvokeProblem'(Val, TagIn) ->
-encode_integer(Val, [{duplicateInvocation,0},{unrecognisedOperation,1},{mistypedArgument,2},{resourceLimitation,3},{releaseInProgress,4},{unrecognisedLinkedId,5},{linkedResponseUnexpected,6},{unexpectedLinkedOperation,7}], TagIn).
+'dec_ROS'(Tlv) ->
+ 'dec_ROS'(Tlv, []).
-'dec_InvokeProblem'(Tlv) ->
- 'dec_InvokeProblem'(Tlv, [2]).
+'dec_ROS'(Tlv, TagIn) ->
+Tlv1 = match_tags(Tlv, TagIn),
+case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of
-'dec_InvokeProblem'(Tlv, TagIn) ->
-begin
-Val1 = decode_integer(Tlv, TagIn),
-number2name(Val1, [{duplicateInvocation,0},{unrecognisedOperation,1},{mistypedArgument,2},{resourceLimitation,3},{releaseInProgress,4},{unrecognisedLinkedId,5},{linkedResponseUnexpected,6},{unexpectedLinkedOperation,7}])
-end
-.
+%% 'invoke'
+ {131073, V1} ->
+ {invoke, 'dec_Invoke'(V1, [])};
+%% 'returnResult'
+ {131074, V1} ->
+ {returnResult, 'dec_ReturnResult'(V1, [])};
-%%================================
-%% ReturnResultProblem
-%%================================
-'enc_ReturnResultProblem'(Val) ->
- 'enc_ReturnResultProblem'(Val, [<<2>>]).
-'enc_ReturnResultProblem'(Val, TagIn) ->
-encode_integer(Val, [{unrecognisedInvocation,0},{resultResponseUnexpected,1},{mistypedResult,2}], TagIn).
+%% 'returnError'
+ {131075, V1} ->
+ {returnError, 'dec_ReturnError'(V1, [])};
-'dec_ReturnResultProblem'(Tlv) ->
- 'dec_ReturnResultProblem'(Tlv, [2]).
+%% 'reject'
+ {131076, V1} ->
+ {reject, 'dec_Reject'(V1, [])};
-'dec_ReturnResultProblem'(Tlv, TagIn) ->
-begin
-Val1 = decode_integer(Tlv, TagIn),
-number2name(Val1, [{unrecognisedInvocation,0},{resultResponseUnexpected,1},{mistypedResult,2}])
-end
+ Else ->
+ exit({error,{asn1,{invalid_choice_tag,Else}}})
+ end
.
+'noInvokeId'() ->
+{absent,'NULL'}.
+
%%================================
-%% ReturnErrorProblem
+%% no-op
%%================================
-'enc_ReturnErrorProblem'(Val) ->
- 'enc_ReturnErrorProblem'(Val, [<<2>>]).
+'enc_no-op'('ArgumentType', Val, _RestPrimFieldName) ->
+ {Val,0};
+'enc_no-op'('ResultType', Val, _RestPrimFieldName) ->
+ {Val,0}.
-'enc_ReturnErrorProblem'(Val, TagIn) ->
-encode_integer(Val, [{unrecognisedInvocation,0},{errorResponseUnexpected,1},{unrecognisedError,2},{unexpectedError,3},{mistypedParameter,4}], TagIn).
+'dec_no-op'('ArgumentType', Bytes,_) ->
+ Bytes;
+'dec_no-op'('ResultType', Bytes,_) ->
+ Bytes.
-'dec_ReturnErrorProblem'(Tlv) ->
- 'dec_ReturnErrorProblem'(Tlv, [2]).
-
-'dec_ReturnErrorProblem'(Tlv, TagIn) ->
-begin
-Val1 = decode_integer(Tlv, TagIn),
-number2name(Val1, [{unrecognisedInvocation,0},{errorResponseUnexpected,1},{unrecognisedError,2},{unexpectedError,3},{mistypedParameter,4}])
-end
-.
%%================================
-%% RejectProblem
+%% refuse
%%================================
-'enc_RejectProblem'(Val) ->
- 'enc_RejectProblem'(Val, [<<2>>]).
+'enc_refuse'('ParameterType', Val, _RestPrimFieldName) ->
+ {Val,0}.
-'enc_RejectProblem'(Val, TagIn) ->
-encode_integer(Val, [{'general-unrecognisedPDU',0},{'general-mistypedPDU',1},{'general-badlyStructuredPDU',2},{'invoke-duplicateInvocation',10},{'invoke-unrecognisedOperation',11},{'invoke-mistypedArgument',12},{'invoke-resourceLimitation',13},{'invoke-releaseInProgress',14},{'invoke-unrecognisedLinkedId',15},{'invoke-linkedResponseUnexpected',16},{'invoke-unexpectedLinkedOperation',17},{'returnResult-unrecognisedInvocation',20},{'returnResult-resultResponseUnexpected',21},{'returnResult-mistypedResult',22},{'returnError-unrecognisedInvocation',30},{'returnError-errorResponseUnexpected',31},{'returnError-unrecognisedError',32},{'returnError-unexpectedError',33},{'returnError-mistypedParameter',34}], TagIn).
+'dec_refuse'('ParameterType', Bytes,_) ->
+ Bytes.
-'dec_RejectProblem'(Tlv) ->
- 'dec_RejectProblem'(Tlv, [2]).
-
-'dec_RejectProblem'(Tlv, TagIn) ->
-begin
-Val1 = decode_integer(Tlv, TagIn),
-number2name(Val1, [{'general-unrecognisedPDU',0},{'general-mistypedPDU',1},{'general-badlyStructuredPDU',2},{'invoke-duplicateInvocation',10},{'invoke-unrecognisedOperation',11},{'invoke-mistypedArgument',12},{'invoke-resourceLimitation',13},{'invoke-releaseInProgress',14},{'invoke-unrecognisedLinkedId',15},{'invoke-linkedResponseUnexpected',16},{'invoke-unexpectedLinkedOperation',17},{'returnResult-unrecognisedInvocation',20},{'returnResult-resultResponseUnexpected',21},{'returnResult-mistypedResult',22},{'returnError-unrecognisedInvocation',30},{'returnError-errorResponseUnexpected',31},{'returnError-unrecognisedError',32},{'returnError-unexpectedError',33},{'returnError-mistypedParameter',34}])
-end
-.
%%================================
-%% InvokeId
+%% emptyUnbind
%%================================
-'enc_InvokeId'(Val) ->
- 'enc_InvokeId'(Val, []).
-
-'enc_InvokeId'(Val, TagIn) ->
- {EncBytes,EncLen} = case element(1,Val) of
- present ->
- encode_integer(element(2,Val), [<<2>>]);
- absent ->
- encode_null(element(2,Val), [<<5>>]);
- Else ->
- exit({error,{asn1,{invalid_choice_type,Else}}})
- end,
-
-encode_tags(TagIn, EncBytes, EncLen).
+'enc_emptyUnbind'('ArgumentType', Val, _RestPrimFieldName) ->
+ {Val,0};
+'enc_emptyUnbind'('ResultType', Val, _RestPrimFieldName) ->
+ {Val,0}.
+'dec_emptyUnbind'('ArgumentType', Bytes,_) ->
+ Bytes;
+'dec_emptyUnbind'('ResultType', Bytes,_) ->
+ Bytes.
-'dec_InvokeId'(Tlv) ->
- 'dec_InvokeId'(Tlv, []).
-'dec_InvokeId'(Tlv, TagIn) ->
-Tlv1 = match_tags(Tlv, TagIn),
-case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of
-
-%% 'present'
- {2, V1} ->
- {present, decode_integer(V1, [])};
+%%================================
+%% emptyBind
+%%================================
+'enc_emptyBind'('ArgumentType', Val, _RestPrimFieldName) ->
+ {Val,0};
+'enc_emptyBind'('ResultType', Val, _RestPrimFieldName) ->
+ {Val,0}.
-%% 'absent'
- {5, V1} ->
- {absent, decode_null(V1, [])};
- Else ->
- exit({error,{asn1,{invalid_choice_tag,Else}}})
- end
-.
-'noInvokeId'() ->
-{absent,'NULL'}.
+'dec_emptyBind'('ArgumentType', Bytes,_) ->
+ Bytes;
+'dec_emptyBind'('ResultType', Bytes,_) ->
+ Bytes.
%%%
@@ -782,6 +936,13 @@ ber_encode(Tlv) when is_binary(Tlv) ->
ber_encode(Tlv) ->
asn1rt_nif:encode_ber_tlv(Tlv).
+dec_subidentifiers(<<>>, _Av, Al) ->
+ lists:reverse(Al);
+dec_subidentifiers(<<1:1,H:7,T/binary>>, Av, Al) ->
+ dec_subidentifiers(T, Av bsl 7 + H, Al);
+dec_subidentifiers(<<H,T/binary>>, Av, Al) ->
+ dec_subidentifiers(T, 0, [Av bsl 7 + H|Al]).
+
decode_integer(Tlv, TagIn) ->
Bin = match_tags(Tlv, TagIn),
Len = byte_size(Bin),
@@ -797,9 +958,37 @@ decode_null(Tlv, Tags) ->
exit({error,{asn1,{decode_null,Val}}})
end.
+decode_object_identifier(Tlv, Tags) ->
+ Val = match_tags(Tlv, Tags),
+ [AddedObjVal|ObjVals] = dec_subidentifiers(Val, 0, []),
+ {Val1,Val2} =
+ if
+ AddedObjVal < 40 ->
+ {0,AddedObjVal};
+ AddedObjVal < 80 ->
+ {1,AddedObjVal - 40};
+ true ->
+ {2,AddedObjVal - 80}
+ end,
+ list_to_tuple([Val1,Val2|ObjVals]).
+
decode_open_type_as_binary(Tlv, TagIn) ->
ber_encode(match_tags(Tlv, TagIn)).
+e_object_identifier({'OBJECT IDENTIFIER',V}) ->
+ e_object_identifier(V);
+e_object_identifier(V) when is_tuple(V) ->
+ e_object_identifier(tuple_to_list(V));
+e_object_identifier([E1,E2|Tail]) ->
+ Head = 40 * E1 + E2,
+ {H,Lh} = mk_object_val(Head),
+ {R,Lr} = lists:mapfoldl(fun enc_obj_id_tail/2, 0, Tail),
+ {[H|R],Lh + Lr}.
+
+enc_obj_id_tail(H, Len) ->
+ {B,L} = mk_object_val(H),
+ {B,Len + L}.
+
encode_integer(Val) ->
Bytes =
if
@@ -850,6 +1039,9 @@ encode_length(L) ->
encode_null(_Val, TagIn) ->
encode_tags(TagIn, [], 0).
+encode_object_identifier(Val, TagIn) ->
+ encode_tags(TagIn, e_object_identifier(Val)).
+
encode_open_type(Val, T) when is_list(Val) ->
encode_open_type(list_to_binary(Val), T);
encode_open_type(Val, Tag) ->
@@ -887,6 +1079,16 @@ minimum_octets(Val, Acc) ->
minimum_octets(Val) ->
minimum_octets(Val, []).
+mk_object_val(0, Ack, Len) ->
+ {Ack,Len};
+mk_object_val(Val, Ack, Len) ->
+ mk_object_val(Val bsr 7, [Val band 127 bor 128|Ack], Len + 1).
+
+mk_object_val(Val) when Val =< 127 ->
+ {[255 band Val],1};
+mk_object_val(Val) ->
+ mk_object_val(Val bsr 7, [Val band 127], 1).
+
number2name(Int, NamedNumberList) ->
case lists:keyfind(Int, 2, NamedNumberList) of
{NamedVal,_} ->
diff --git a/Remote-Operations-Generic-ROS-PDUs.hrl b/Remote-Operations-Generic-ROS-PDUs.hrl
index 318d27f..a77fb1f 100644
--- a/Remote-Operations-Generic-ROS-PDUs.hrl
+++ b/Remote-Operations-Generic-ROS-PDUs.hrl
@@ -8,8 +8,11 @@
-ifndef(_REMOTE_OPERATIONS_GENERIC_ROS_PDUS_HRL_).
-define(_REMOTE_OPERATIONS_GENERIC_ROS_PDUS_HRL_, true).
--record('Invoke',{
-invokeId, linkedId = asn1_NOVALUE, opcode, argument = asn1_NOVALUE}).
+-record('Reject',{
+invokeId, problem}).
+
+-record('ReturnError',{
+invokeId, errcode, parameter = asn1_NOVALUE}).
-record('ReturnResult',{
invokeId, result = asn1_NOVALUE}).
@@ -17,11 +20,8 @@ invokeId, result = asn1_NOVALUE}).
-record('ReturnResult_result',{
opcode, result}).
--record('ReturnError',{
-invokeId, errcode, parameter = asn1_NOVALUE}).
-
--record('Reject',{
-invokeId, problem}).
+-record('Invoke',{
+invokeId, linkedId = asn1_NOVALUE, opcode, argument = asn1_NOVALUE}).
-define('noInvokeId', {absent,'NULL'}).
-endif. %% _REMOTE_OPERATIONS_GENERIC_ROS_PDUS_HRL_