Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenXG
OpenXG-RAN
Commits
ed176d22
Commit
ed176d22
authored
Jun 11, 2024
by
Rúben Soares Silva
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Expose packing/unpacking functions for (n)FAPI P5 messages for FAPI library creation
Will be reused from other files in later commits.
parent
3b0c90ae
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
94 additions
and
16 deletions
+94
-16
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
+31
-0
nfapi/open-nFAPI/nfapi/src/nfapi_p5.c
nfapi/open-nFAPI/nfapi/src/nfapi_p5.c
+61
-14
nfapi/open-nFAPI/pnf/public_inc/nfapi_pnf_interface.h
nfapi/open-nFAPI/pnf/public_inc/nfapi_pnf_interface.h
+1
-1
nfapi/open-nFAPI/pnf/src/pnf.c
nfapi/open-nFAPI/pnf/src/pnf.c
+1
-1
No files found.
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
View file @
ed176d22
...
...
@@ -4118,8 +4118,39 @@ int pack_nr_srs_beamforming_report(void *pMessageBuf, void *pPackedBuf, uint32_t
*/
int
unpack_nr_srs_beamforming_report
(
void
*
pMessageBuf
,
uint32_t
messageBufLen
,
void
*
pUnpackedBuf
,
uint32_t
unpackedBufLen
);
uint8_t
pack_nr_param_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
unpack_nr_param_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
pack_nr_param_response
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
unpack_nr_param_response
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
pack_nr_config_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
unpack_nr_config_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
pack_nr_config_response
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
unpack_nr_config_response
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
pack_nr_start_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
unpack_nr_start_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
pack_nr_start_response
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
unpack_nr_start_response
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
pack_nr_stop_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
unpack_nr_stop_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
pack_nr_stop_indication
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
unpack_nr_stop_indication
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
pack_nr_error_indication
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
);
uint8_t
unpack_nr_error_indication
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
);
#endif
/* _NFAPI_INTERFACE_H_ */
nfapi/open-nFAPI/nfapi/src/nfapi_p5.c
View file @
ed176d22
...
...
@@ -273,7 +273,7 @@ static uint8_t pack_pnf_stop_response(void *msg, uint8_t **ppWritePackedMsg, uin
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
));
}
static
uint8_t
pack_nr_param_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
uint8_t
pack_nr_param_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_param_request_scf_t
*
pNfapiMsg
=
(
nfapi_nr_param_request_scf_t
*
)
msg
;
return
(
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
));
}
...
...
@@ -665,7 +665,7 @@ static uint8_t pack_param_response(void *msg, uint8_t **ppWritePackedMsg, uint8_
&&
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
));
}
static
uint8_t
pack_nr_param_response
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
uint8_t
pack_nr_param_response
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
printf
(
"
\n
RUNNING pack_param_response
\n
"
);
nfapi_nr_param_response_scf_t
*
pNfapiMsg
=
(
nfapi_nr_param_response_scf_t
*
)
msg
;
...
...
@@ -1470,7 +1470,7 @@ static uint8_t pack_config_request(void *msg, uint8_t **ppWritePackedMsg, uint8_
&
pack_uint8_tlv_value
));
}
static
uint8_t
pack_nr_config_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
uint8_t
pack_nr_config_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
uint8_t
*
pNumTLVFields
=
(
uint8_t
*
)
*
ppWritePackedMsg
;
...
...
@@ -1849,7 +1849,7 @@ static uint8_t pack_nr_config_request(void *msg, uint8_t **ppWritePackedMsg, uin
return
retval
;
}
static
uint8_t
pack_nr_config_response
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
uint8_t
pack_nr_config_response
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_config_response_scf_t
*
pNfapiMsg
=
(
nfapi_nr_config_response_scf_t
*
)
msg
;
return
(
push8
(
pNfapiMsg
->
error_code
,
ppWritePackedMsg
,
end
)
&&
push8
(
pNfapiMsg
->
num_invalid_tlvs
,
ppWritePackedMsg
,
end
)
...
...
@@ -1865,7 +1865,7 @@ static uint8_t pack_config_response(void *msg, uint8_t **ppWritePackedMsg, uint8
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
)
);
}
static
uint8_t
pack_nr_start_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
uint8_t
pack_nr_start_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_start_request_scf_t
*
pNfapiMsg
=
(
nfapi_nr_start_request_scf_t
*
)
msg
;
return
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
);
}
...
...
@@ -1875,7 +1875,7 @@ static uint8_t pack_start_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t
return
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
);
}
static
uint8_t
pack_nr_start_response
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
uint8_t
pack_nr_start_response
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_start_response_scf_t
*
pNfapiMsg
=
(
nfapi_nr_start_response_scf_t
*
)
msg
;
return
(
push32
(
pNfapiMsg
->
error_code
,
ppWritePackedMsg
,
end
)
&&
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
)
);
...
...
@@ -1887,11 +1887,36 @@ static uint8_t pack_start_response(void *msg, uint8_t **ppWritePackedMsg, uint8_
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
)
);
}
static
uint8_t
pack_stop_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
uint8_t
pack_nr_stop_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_stop_request_scf_t
*
pNfapiMsg
=
(
nfapi_nr_stop_request_scf_t
*
)
msg
;
return
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
);
}
static
uint8_t
pack_stop_request
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_stop_request_t
*
pNfapiMsg
=
(
nfapi_stop_request_t
*
)
msg
;
return
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
);
}
uint8_t
pack_nr_stop_indication
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_stop_indication_scf_t
*
pNfapiMsg
=
(
nfapi_nr_stop_indication_scf_t
*
)
msg
;
return
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
);
}
uint8_t
pack_nr_error_indication
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_error_indication_scf_t
*
pNfapiMsg
=
(
nfapi_nr_error_indication_scf_t
*
)
msg
;
uint8_t
retval
=
push16
(
pNfapiMsg
->
sfn
,
ppWritePackedMsg
,
end
);
retval
&=
push16
(
pNfapiMsg
->
slot
,
ppWritePackedMsg
,
end
);
retval
&=
push8
(
pNfapiMsg
->
message_id
,
ppWritePackedMsg
,
end
);
retval
&=
push8
(
pNfapiMsg
->
error_code
,
ppWritePackedMsg
,
end
);
retval
&=
pack_vendor_extension_tlv
(
pNfapiMsg
->
vendor_extension
,
ppWritePackedMsg
,
end
,
config
);
return
retval
;
}
static
uint8_t
pack_recevied_interference_power_measurement_value
(
void
*
tlv
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
)
{
nfapi_received_interference_power_measurement_t
*
value
=
(
nfapi_received_interference_power_measurement_t
*
)
tlv
;
return
(
push16
(
value
->
number_of_resource_blocks
,
ppWritePackedMsg
,
end
)
&&
...
...
@@ -2425,7 +2450,7 @@ static uint8_t unpack_param_request(uint8_t **ppReadPackedMsg, uint8_t *end, voi
return
unpack_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
));
}
static
uint8_t
unpack_nr_param_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
uint8_t
unpack_nr_param_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_param_request_scf_t
*
pNfapiMsg
=
(
nfapi_nr_param_request_scf_t
*
)
msg
;
return
unpack_nr_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
));
...
...
@@ -2918,7 +2943,7 @@ static uint8_t unpack_config_request(uint8_t **ppReadPackedMsg, uint8_t *end, vo
&
pNfapiMsg
->
vendor_extension
));
}
static
uint8_t
unpack_nr_config_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
uint8_t
unpack_nr_config_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
{
// Helper vars for indexed TLVs
int
prach_root_seq_idx
=
0
;
...
...
@@ -3232,7 +3257,7 @@ uint8_t unpack_nr_config_response(uint8_t **ppReadPackedMsg, uint8_t *end, void
return
retVal
;
}
static
uint8_t
unpack_nr_start_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
uint8_t
unpack_nr_start_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_start_request_scf_t
*
pNfapiMsg
=
(
nfapi_nr_start_request_scf_t
*
)
msg
;
return
unpack_nr_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
));
...
...
@@ -3243,17 +3268,22 @@ static uint8_t unpack_start_request(uint8_t **ppReadPackedMsg, uint8_t *end, voi
return
unpack_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
));
}
uint8_t
unpack_nr_start_response
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_start_response_scf_t
*
pNfapiMsg
=
(
nfapi_nr_start_response_scf_t
*
)
msg
;
return
(
pull32
(
ppReadPackedMsg
,
&
pNfapiMsg
->
error_code
,
end
)
&&
unpack_nr_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
)));
}
static
uint8_t
unpack_start_response
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_start_response_t
*
pNfapiMsg
=
(
nfapi_start_response_t
*
)
msg
;
return
(
pull32
(
ppReadPackedMsg
,
&
pNfapiMsg
->
error_code
,
end
)
&&
unpack_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
)));
}
static
uint8_t
unpack_nr_start_response
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
uint8_t
unpack_nr_stop_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_start_response_scf_t
*
pNfapiMsg
=
(
nfapi_nr_start_response_scf_t
*
)
msg
;
return
(
pull32
(
ppReadPackedMsg
,
&
pNfapiMsg
->
error_code
,
end
)
&&
unpack_nr_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
)));
nfapi_nr_stop_request_scf_t
*
pNfapiMsg
=
(
nfapi_nr_stop_request_scf_t
*
)
msg
;
return
unpack_nr_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
));
}
static
uint8_t
unpack_stop_request
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
{
...
...
@@ -3261,6 +3291,23 @@ static uint8_t unpack_stop_request(uint8_t **ppReadPackedMsg, uint8_t *end, void
return
unpack_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
));
}
uint8_t
unpack_nr_stop_indication
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_stop_indication_scf_t
*
pNfapiMsg
=
(
nfapi_nr_stop_indication_scf_t
*
)
msg
;
return
unpack_nr_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
));
}
uint8_t
unpack_nr_error_indication
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p4_p5_codec_config_t
*
config
)
{
nfapi_nr_error_indication_scf_t
*
pNfapiMsg
=
(
nfapi_nr_error_indication_scf_t
*
)
msg
;
uint8_t
retval
=
pull16
(
ppReadPackedMsg
,
&
pNfapiMsg
->
sfn
,
end
);
retval
&=
pull16
(
ppReadPackedMsg
,
&
pNfapiMsg
->
slot
,
end
);
retval
&=
pull8
(
ppReadPackedMsg
,
&
pNfapiMsg
->
message_id
,
end
);
retval
&=
pull8
(
ppReadPackedMsg
,
&
pNfapiMsg
->
error_code
,
end
);
retval
&=
unpack_nr_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
(
pNfapiMsg
->
vendor_extension
));
return
retval
;
}
static
uint8_t
unpack_received_interference_power_measurement_value
(
void
*
tlv
,
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
)
{
nfapi_received_interference_power_measurement_t
*
value
=
(
nfapi_received_interference_power_measurement_t
*
)
tlv
;
return
(
pull16
(
ppReadPackedMsg
,
&
value
->
number_of_resource_blocks
,
end
)
&&
...
...
nfapi/open-nFAPI/pnf/public_inc/nfapi_pnf_interface.h
View file @
ed176d22
...
...
@@ -214,7 +214,7 @@ typedef struct nfapi_pnf_config
* STOP.request. This can be done in the call back.
*/
int
(
*
stop_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_stop_request_t
*
req
);
int
(
*
nr_stop_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_nr_stop_request_t
*
req
);
int
(
*
nr_stop_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_nr_stop_request_
scf_
t
*
req
);
/*! A callback for the MEASUREMENT.request
* \param config A pointer to the pnf configuration
...
...
nfapi/open-nFAPI/pnf/src/pnf.c
View file @
ed176d22
...
...
@@ -946,7 +946,7 @@ void pnf_nr_handle_stop_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
}
else
{
nfapi_nr_stop_request
_t
req
;
nfapi_nr_stop_request_scf
_t
req
;
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"STOP.request received
\n
"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment