Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Q
QJ_500-7c
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
时昊
QJ_500-7c
Commits
cf6c9057
Commit
cf6c9057
authored
Jun 06, 2024
by
薛晓虎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 屏蔽打印;关闭log等级;修改欠压电压为2.67V
parent
072dae6e
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
81 additions
and
62 deletions
+81
-62
Protocol_User.c
qianjiang/main/Protocol_User.c
+4
-4
app_BT_User.c
qianjiang/main/app_BT_User.c
+4
-4
app_Ble_User.c
qianjiang/main/app_Ble_User.c
+20
-3
bt_app_hf.c
qianjiang/main/bt_app_hf.c
+21
-21
gatts_table_creat_demo.c
qianjiang/main/gatts_table_creat_demo.c
+3
-3
main_user.c
qianjiang/main/main_user.c
+3
-3
simple_ota_example.c
qianjiang/main/simple_ota_example.c
+5
-5
sdkconfig
qianjiang/sdkconfig
+21
-19
No files found.
qianjiang/main/Protocol_User.c
View file @
cf6c9057
...
...
@@ -217,7 +217,7 @@ static void Protocol_UartHandle(const Protocol_Data_t *pData)
if
(
Prot_User
.
State
<
Prot_Start
)
{
Prot_User
.
State
=
Prot_Start
;
printf
(
"Prot_Start
\r\n
"
);
//
printf("Prot_Start \r\n");
}
}
else
if
(
pData
->
CmdID
==
0x03
)
...
...
@@ -227,7 +227,7 @@ static void Protocol_UartHandle(const Protocol_Data_t *pData)
{
Prot_User
.
State
=
Prot_Normal
;
printf
(
"Prot_Normal
\r\n
"
);
//
printf("Prot_Normal \r\n");
}
if
(
Prot_User
.
State
>=
Prot_Start
)
...
...
@@ -251,7 +251,7 @@ static void Protocol_UartHandle(const Protocol_Data_t *pData)
{
bsp_Ble_Init
();
printf
(
"get uuid and init ble!!!
\r\n
"
);
//
printf("get uuid and init ble!!! \r\n");
}
Ble_User
.
UseridUpdate
=
0xAA
;
...
...
@@ -268,7 +268,7 @@ static void Protocol_UartHandle(const Protocol_Data_t *pData)
if
(
Wifi_OTA_Request
==
0
)
{
Wifi_OTA_Request
=
1
;
printf
(
"get ota req!
\r\n
"
);
//
printf("get ota req! \r\n");
}
// }
}
...
...
qianjiang/main/app_BT_User.c
View file @
cf6c9057
...
...
@@ -28,7 +28,7 @@ void BT_Connect_Event_Pro(void )
BT_User
.
Call_Sts
=
Call_Idle
;
BT_User
.
ReconnTime
=
BT_ReConn_T
-
500
;
BT_User
.
HF_Ctrl
=
HF_Idle
;
printf
(
"TB CONN
\r\n
"
);
//
printf("TB CONN\r\n");
}
...
...
@@ -38,7 +38,7 @@ void BT_DisConnect_Event_Pro(void )
BT_User
.
Call_Sts
=
Call_Idle
;
BT_User
.
ReconnTime
=
BT_ReConn_T
-
500
;
BT_User
.
HF_Ctrl
=
HF_Idle
;
printf
(
"TB DISCONN
\r\n
"
);
//
printf("TB DISCONN\r\n");
}
void
BT_User_Process
(
void
)
...
...
@@ -88,13 +88,13 @@ void BT_User_Process(void )
BT_User
.
ReconnTime
++
;
if
(
BT_User
.
ReconnTime
>=
BT_ReConn_T
)
{
printf
(
"Connect Start.................
\n
"
);
//
printf("Connect Start.................\n");
if
(
app_BT_Get_BondDev
()
==
1
)
{
esp_hf_client_connect
(
peer_addr
);
}
printf
(
"Connect Over
\n
"
);
//
printf("Connect Over\n");
BT_User
.
ReconnTime
=
0
;
}
...
...
qianjiang/main/app_Ble_User.c
View file @
cf6c9057
...
...
@@ -322,7 +322,7 @@ void Ble_MsgRec_Authr_Result_Analysis(void )
Ble_User
.
Ble_Sts
=
Ble_Authr
;
Ble_User
.
Request_Navi
=
1
;
printf
(
"Authr suc
\n
"
);
//
printf("Authr suc\n");
}
}
...
...
@@ -392,6 +392,7 @@ void Ble_Msg_RequestNavi_RLY(void )
void
Ble_MsgRec_Navi_Analysis
(
void
)
{
uint32_t
aaa
=
0
;
//Navi data
Ble_Navi_Data
.
Navi_Sts
=
BleRecData
.
Msg
.
Param
[
0
];
Ble_Navi_Data
.
Navi_Turn
=
BleRecData
.
Msg
.
Param
[
1
];
...
...
@@ -401,8 +402,24 @@ void Ble_MsgRec_Navi_Analysis(void )
Ble_Navi_Data
.
Navi_Dte
[
3
]
=
BleRecData
.
Msg
.
Param
[
5
];
printf
(
"Navi sts %d Navi_Turn %x Navi_Dte0 %x Navi_Dte1 %x Navi_Dte2 %x Navi_Dte3 %x
\r\n
"
,
\
Ble_Navi_Data
.
Navi_Sts
,
Ble_Navi_Data
.
Navi_Turn
,
Ble_Navi_Data
.
Navi_Dte
[
0
],
Ble_Navi_Data
.
Navi_Dte
[
1
],
Ble_Navi_Data
.
Navi_Dte
[
2
],
Ble_Navi_Data
.
Navi_Dte
[
3
]);
// printf("Navi sts %d Navi_Turn %x Navi_Dte0 %x Navi_Dte1 %x Navi_Dte2 %x Navi_Dte3 %x\r\n",
// Ble_Navi_Data.Navi_Sts, Ble_Navi_Data.Navi_Turn, Ble_Navi_Data.Navi_Dte[0], Ble_Navi_Data.Navi_Dte[1], Ble_Navi_Data.Navi_Dte[2],Ble_Navi_Data.Navi_Dte[3]);
aaa
=
Ble_Navi_Data
.
Navi_Dte
[
3
];
aaa
<<=
8
;
aaa
|=
Ble_Navi_Data
.
Navi_Dte
[
2
];
aaa
<<=
8
;
aaa
|=
Ble_Navi_Data
.
Navi_Dte
[
1
];
aaa
<<=
8
;
aaa
|=
Ble_Navi_Data
.
Navi_Dte
[
0
];
// printf("navi sts = %x; navi turn = %d; navi dest = %ld\n", Ble_Navi_Data.Navi_Sts, Ble_Navi_Data.Navi_Turn, aaa);
// printf("Navi sts %d Navi_Turn %x Navi_Dte0 %x Navi_Dte1 %x Navi_Dte2 %x Navi_Dte3 %x\r\n",
// Ble_Navi_Data.Navi_Sts, Ble_Navi_Data.Navi_Turn, Ble_Navi_Data.Navi_Dte[0], Ble_Navi_Data.Navi_Dte[1], Ble_Navi_Data.Navi_Dte[2],Ble_Navi_Data.Navi_Dte[3]);
Ble_User
.
Navi_Updat
=
1
;
Ble_User
.
Navi_T
=
0
;
...
...
qianjiang/main/bt_app_hf.c
View file @
cf6c9057
...
...
@@ -335,12 +335,12 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_
{
BT_User
.
Call_Sts
=
Call_Idle
;
printf
(
"call idle
\r\n
"
);
//
printf("call idle\r\n");
}
else
if
(
param
->
call
.
status
==
1
)
{
BT_User
.
Call_Sts
=
Call_InProcess
;
printf
(
"call Call_InProcess
\r\n
"
);
//
printf("call Call_InProcess\r\n");
}
break
;
}
...
...
@@ -358,7 +358,7 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_
{
BT_User
.
Call_Sts
=
Call_Idle
;
printf
(
"call idle
\r\n
"
);
//
printf("call idle\r\n");
}
break
;
}
...
...
@@ -366,19 +366,19 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_
{
BT_User
.
Call_Sts
=
Call_IncomeCalling
;
printf
(
"call income
\r\n
"
);
//
printf("call income\r\n");
break
;
}
case
2
:
{
BT_User
.
Call_Sts
=
Call_OutCalling
;
printf
(
"call outcall
\r\n
"
);
//
printf("call outcall\r\n");
break
;
}
case
3
:
{
BT_User
.
Call_Sts
=
Call_OutCalling
;
printf
(
"call outcall
\r\n
"
);
//
printf("call outcall\r\n");
break
;
}
}
...
...
@@ -480,42 +480,42 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_
HF_CMD_HANDLER
(
conn
)
{
printf
(
"connect
\n
"
);
//
printf("connect\n");
esp_hf_client_connect
(
peer_addr
);
return
0
;
}
HF_CMD_HANDLER
(
disc
)
{
printf
(
"disconnect
\n
"
);
//
printf("disconnect\n");
esp_hf_client_disconnect
(
peer_addr
);
return
0
;
}
HF_CMD_HANDLER
(
conn_audio
)
{
printf
(
"connect audio
\n
"
);
//
printf("connect audio\n");
esp_hf_client_connect_audio
(
peer_addr
);
return
0
;
}
HF_CMD_HANDLER
(
disc_audio
)
{
printf
(
"disconnect audio
\n
"
);
//
printf("disconnect audio\n");
esp_hf_client_disconnect_audio
(
peer_addr
);
return
0
;
}
HF_CMD_HANDLER
(
query_op
)
{
printf
(
"Query operator
\n
"
);
//
printf("Query operator\n");
esp_hf_client_query_current_operator_name
();
return
0
;
}
HF_CMD_HANDLER
(
answer
)
{
printf
(
"Answer call
\n
"
);
//
printf("Answer call\n");
esp_hf_client_answer_call
();
return
0
;
}
...
...
@@ -523,21 +523,21 @@ HF_CMD_HANDLER(reject)
{
esp_err_t
err
;
err
=
esp_hf_client_reject_call
();
printf
(
"Reject call err %d
\n
"
,
err
);
//
printf("Reject call err %d\n",err);
return
0
;
}
const
char
test_dial_num
[]
=
"17800536969"
;
HF_CMD_HANDLER
(
dial
)
{
printf
(
"Dial number %s
\n
"
,
test_dial_num
);
//
printf("Dial number %s\n", test_dial_num);
esp_hf_client_dial
(
test_dial_num
);
return
0
;
}
HF_CMD_HANDLER
(
redial
)
{
printf
(
"Dial number
\n
"
);
//
printf("Dial number\n");
esp_hf_client_dial
(
NULL
);
return
0
;
}
...
...
@@ -552,14 +552,14 @@ HF_CMD_HANDLER(dial_mem)
HF_CMD_HANDLER
(
start_vr
)
{
printf
(
"Start voice recognition
\n
"
);
//
printf("Start voice recognition\n");
esp_hf_client_start_voice_recognition
();
return
0
;
}
HF_CMD_HANDLER
(
stop_vr
)
{
printf
(
"Stop voice recognition
\n
"
);
//
printf("Stop voice recognition\n");
esp_hf_client_stop_voice_recognition
();
return
0
;
}
...
...
@@ -567,21 +567,21 @@ HF_CMD_HANDLER(stop_vr)
// HF_CMD_HANDLER(query_call)
// {
// printf("Query current call status\n");
//
//
printf("Query current call status\n");
// esp_hf_client_query_current_calls();
// return 0;
// }
// HF_CMD_HANDLER(retrieve_subscriber)
// {
// printf("Retrieve subscriber information\n");
//
//
printf("Retrieve subscriber information\n");
// esp_hf_client_retrieve_subscriber_info();
// return 0;
// }
// HF_CMD_HANDLER(request_last_voice_tag)
// {
// printf("Request last voice tag\n");
//
//
printf("Request last voice tag\n");
// esp_hf_client_request_last_voice_tag_number();
// return 0;
// }
...
...
@@ -598,7 +598,7 @@ HF_CMD_HANDLER(btrh)
{
int
btrh
=
ESP_HF_BTRH_CMD_HOLD
;
printf
(
"respond and hold command: %d
\n
"
,
btrh
);
//
printf("respond and hold command: %d\n", btrh);
esp_hf_client_send_btrh_cmd
(
btrh
);
return
0
;
}
...
...
qianjiang/main/gatts_table_creat_demo.c
View file @
cf6c9057
...
...
@@ -534,7 +534,7 @@ static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param
if
(
adv_config_done
==
0
){
esp_ble_gap_start_advertising
(
&
adv_params
);
printf
(
"adv 1
\r\n
"
);
//
printf("adv 1\r\n");
}
break
;
case
ESP_GAP_BLE_SCAN_RSP_DATA_RAW_SET_COMPLETE_EVT
:
...
...
@@ -542,7 +542,7 @@ static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param
if
(
adv_config_done
==
0
){
esp_ble_gap_start_advertising
(
&
adv_params
);
printf
(
"adv 2
\r\n
"
);
//
printf("adv 2\r\n");
}
break
;
#else
...
...
@@ -908,7 +908,7 @@ void Get_Mac_Init(void )
// ESP_LOGW(GATTS_TABLE_TAG, "BLE_MAC IS %s : ",
// temp);
printf
(
"My MAC:
\n
"
);
//
printf("My MAC:\n");
esp_log_buffer_hex
(
GATTS_TABLE_TAG
,
ble_mac
,
6
);
BT_Device_Name
[
sizeof
(
BT_Device_Name
)
-
11
]
=
temp
[
0
];
...
...
qianjiang/main/main_user.c
View file @
cf6c9057
...
...
@@ -93,8 +93,8 @@ static void Sys_Run_Tasks(void *arg)
{
testcnt
=
0
;
printf
(
"BT_User.BT_Sts = %d
\r\n
"
,
BT_User
.
BT_Sts
);
printf
(
"Ble_User.Ble_Sts = %d
\r\n
"
,
Ble_User
.
Ble_Sts
);
//
printf("BT_User.BT_Sts = %d\r\n", BT_User.BT_Sts);
//
printf("Ble_User.Ble_Sts = %d\r\n", Ble_User.Ble_Sts);
// esp_log_buffer_hex(TAG, peer_addr, 6);
...
...
@@ -133,7 +133,7 @@ void app_main(void)
// bsp_Ble_Init();
bsp_Uart_Init
();
printf
(
"KL30 INIT OVER~~~~~~
\r\n
"
);
//
printf("KL30 INIT OVER~~~~~~\r\n");
xTaskCreatePinnedToCore
(
Sys_Run_Tasks
,
"Sys_Run_Tasks"
,
4096
,
NULL
,
3
,
NULL
,
1
);
}
...
...
qianjiang/main/simple_ota_example.c
View file @
cf6c9057
...
...
@@ -130,16 +130,16 @@ void simple_ota_example_task(void *pvParameter)
if
(
ret
==
ESP_OK
)
{
ESP_LOGI
(
TAG
,
"OTA Succeed"
);
printf
(
"
\n
"
);
printf
(
"==========================================================
\n
"
);
//
printf("\n");
//
printf("==========================================================\n");
for
(
i
=
5
;
i
>
0
;
i
--
)
{
printf
(
"============ System will restart in %d second. ============
\n
"
,
i
);
vTaskDelay
(
1000
/
portTICK_PERIOD_MS
);
}
printf
(
"============ System rebooting... ============
\n
"
);
printf
(
"==========================================================
\n
"
);
printf
(
"
\n
"
);
//
printf("============ System rebooting... ============\n");
//
printf("==========================================================\n");
//
printf("\n");
esp_restart
();
}
else
{
...
...
qianjiang/sdkconfig
View file @
cf6c9057
...
...
@@ -212,12 +212,12 @@ CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set
# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set
# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set
# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set
CONFIG_BOOTLOADER_LOG_LEVEL_WARN=y
CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y
# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set
# CONFIG_BOOTLOADER_LOG_LEVEL_INFO is not set
# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set
# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set
CONFIG_BOOTLOADER_LOG_LEVEL=
2
CONFIG_BOOTLOADER_LOG_LEVEL=
1
#
# Serial Flash Configurations
...
...
@@ -1122,15 +1122,15 @@ CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5=y
# Brownout Detector
#
CONFIG_ESP_BROWNOUT_DET=y
CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0 is not set
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set
CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4=y
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set
CONFIG_ESP_BROWNOUT_DET_LVL=
0
CONFIG_ESP_BROWNOUT_DET_LVL=
4
# end of Brownout Detector
# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set
...
...
@@ -1335,16 +1335,18 @@ CONFIG_HEAP_TRACING_OFF=y
# Log output
#
# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set
# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set
CONFIG_LOG_DEFAULT_LEVEL_ERROR=y
# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set
CONFIG_LOG_DEFAULT_LEVEL_INFO=y
# CONFIG_LOG_DEFAULT_LEVEL_INFO is not set
# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set
# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set
CONFIG_LOG_DEFAULT_LEVEL=
3
CONFIG_LOG_DEFAULT_LEVEL=
1
CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y
# CONFIG_LOG_MAXIMUM_LEVEL_WARN is not set
# CONFIG_LOG_MAXIMUM_LEVEL_INFO is not set
# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set
# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set
CONFIG_LOG_MAXIMUM_LEVEL=
3
CONFIG_LOG_MAXIMUM_LEVEL=
1
CONFIG_LOG_COLORS=y
CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y
# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set
...
...
@@ -1898,12 +1900,12 @@ CONFIG_WPA_MBEDTLS_TLS_CLIENT=y
# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set
# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set
# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set
CONFIG_LOG_BOOTLOADER_LEVEL_WARN=y
CONFIG_LOG_BOOTLOADER_LEVEL_ERROR=y
# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set
# CONFIG_LOG_BOOTLOADER_LEVEL_INFO is not set
# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set
# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set
CONFIG_LOG_BOOTLOADER_LEVEL=
2
CONFIG_LOG_BOOTLOADER_LEVEL=
1
# CONFIG_APP_ROLLBACK_ENABLE is not set
# CONFIG_FLASH_ENCRYPTION_ENABLED is not set
# CONFIG_FLASHMODE_QIO is not set
...
...
@@ -2204,24 +2206,24 @@ CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
CONFIG_ESP32_DEBUG_OCDAWARE=y
CONFIG_BROWNOUT_DET=y
CONFIG_ESP32_BROWNOUT_DET=y
CONFIG_BROWNOUT_DET_LVL_SEL_0=y
CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y
# CONFIG_BROWNOUT_DET_LVL_SEL_0 is not set
# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0 is not set
# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set
# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set
# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set
# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set
# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set
# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set
# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set
# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set
CONFIG_BROWNOUT_DET_LVL_SEL_4=y
CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4=y
# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set
# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set
# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set
# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set
# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set
CONFIG_BROWNOUT_DET_LVL=
0
CONFIG_ESP32_BROWNOUT_DET_LVL=
0
CONFIG_BROWNOUT_DET_LVL=
4
CONFIG_ESP32_BROWNOUT_DET_LVL=
4
# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set
CONFIG_IPC_TASK_STACK_SIZE=1024
CONFIG_TIMER_TASK_STACK_SIZE=3584
...
...
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