Comment #3 on issue 205 by [email protected]: CAP - Implement initialDPGPRS CAP V3 Operation
http://code.google.com/p/jss7/issues/detail?id=205

Hello!

Here is a my comments:

1.
org.mobicents.protocols.ss7.cap.api.service.gprs.primitive.AccessPointName: and
org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.APN

(from TS 3GPP TS 23.003):
The encoding of the APN shall follow the Name Syntax defined in RFC 2181 [18], RFC 1035 [19] and RFC 1123 [20]. The APN consists of one or more labels. Each label is coded as a one octet length field followed by that number of octets coded as 8 bit ASCII characters. Following RFC 1035 [19] the labels shall consist only of the alphabetic characters (A-Z and a-z), digits (0-9) and the hyphen (-). Following RFC 1123 [20], the label shall begin and end with either an alphabetic character or a digit. The case of alphabetic characters is not significant. The APN is not terminated
by a length byte of zero.
NOTE: A length byte of zero is added by the SGSN/MME at the end of the APN before interrogating a DNS
server.
For the purpose of presentation, an APN is usually displayed as a string in which the labels are separated by dots (e.g.
"Label1.Label2.Label3").

May be can create a getter (String getAPN()) amd a constructor with a parameter (String apn) where apn string=="Label1.Label2.Label3".

2. We need unittests for:
CAMELFCIGPRSBillingChargingCharacteristics, SGSNCapabilities

3. FreeFormatData: do we need to implement this internal structure?

4. ChargingCharacteristics:
for "empty" values for parameters I meant "0" values, not "-1".
because "0" is not possible.
But your chaice is possible, you only should add comments in ChargingCharacteristics like:
"-1 means an absent value"

5. GPRSCause:
I am little confused here.
A specification says about mapping to GTP cause, GMM cause and SM cause values.
But I do not undwerstand which values to use.
Can anybody help me?

6. ApplyChargingReportGPRS:
- active [2] BOOLEAN DEFAULT TRUE:
there are two approaches for encoding a parameter when value==TRUE:
a) sending boolean(true)
b) just sending nothing ("nothing" means "TRUE")
You selected the option a). I do not really know which of approaches is better :(
We can look at live traces to find which method is usually ised.
Another solution is boolean->Boolean replacing. And we can give to a CAP user an opportunity to select between true and null.
- pay attention to "RETURN RESULT TRUE" in ApplyChargingReportGPRS.
This means that we must implement "empty" (parameterless) ApplyChargingReportGPRSResponse
(not only ApplyChargingReportGPRSRequest) primitive.

7. EntityReleasedGPRSResponse:
we need to implement it

8. furnishChargingInformationGPRS:
bad implementation, look:
FurnishChargingInformationGPRSArg {PARAMETERS-BOUND : bound} ::=
FCIGPRSBillingChargingCharacteristics{bound}
FCIGPRSBillingChargingCharacteristics {PARAMETERS-BOUND : bound} ::= OCTET STRING (SIZE(1 .. 160))
(CONSTRAINED BY {-- shall be the result of the BER-encoded value of type -
CAMEL-FCIGPRSBillingChargingCharacteristics {bound}})
So the top level is OCTET STRING, getTag()->Tag.STRING_OCTET, getIsPrimitive()->true
And the OCTET STRING contains an encoded SEQUENCE





Reply via email to