|
|
@ -80,7 +80,7 @@ class Xsync : public IXsync { |
|
|
|
lock_guard<recursive_mutex> lock(connectStatelock_); |
|
|
|
m_is_connected = connected; |
|
|
|
m_xsync_ip = ip; |
|
|
|
if (m_on_connect_state_change_cb) m_on_connect_state_change_cb(m_xsync_ip, m_is_connected); |
|
|
|
if (m_on_connect_state_change_cb) m_on_connect_state_change_cb(m_is_connected, m_xsync_ip); |
|
|
|
} |
|
|
|
|
|
|
|
string _getXsyncIp() { |
|
|
@ -170,9 +170,9 @@ class Xsync : public IXsync { |
|
|
|
// 设备枚举线程
|
|
|
|
device_state_monitor_thread.reset(new thread([this]() { |
|
|
|
while (!destoryflag) { |
|
|
|
int32_t has_not_receive_packet_time_s = (Xsync_GetTicket() - m_last_receive_packet_tp) / 1000 / 1000 / 1000; |
|
|
|
int32_t has_not_receive_packet_time_s = (Xsync_GetTicket() - m_last_receive_packet_tp) / 1000 / 1000; |
|
|
|
// ZLOGI(TAG, "%lld ", has_not_receive_packet_time_s);
|
|
|
|
if (m_is_connected && (has_not_receive_packet_time_s) > 5) { |
|
|
|
if (m_is_connected && (has_not_receive_packet_time_s) > 500) { |
|
|
|
_setNetworkState(false, ""); |
|
|
|
} |
|
|
|
this_thread::sleep_for(chrono::seconds(1)); |
|
|
@ -199,6 +199,75 @@ class Xsync : public IXsync { |
|
|
|
virtual bool getConnectState() override { return _getConnectState(); } |
|
|
|
virtual string getDeviceIp() override { return _getXsyncIp(); } |
|
|
|
|
|
|
|
virtual xs_error_code_t NetworkConfig_setMode(NetworkMode_t mode) { REG_WRITE(reg::kstm32_obtaining_ip_mode, mode); } |
|
|
|
virtual xs_error_code_t NetworkConfig_getMode(NetworkMode_t &mode) override { |
|
|
|
uint32_t mode_u32; |
|
|
|
DO_XSYNC(reg_read(reg::kstm32_obtaining_ip_mode, mode_u32, 10)); |
|
|
|
mode = (NetworkMode_t)mode_u32; |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
|
|
|
|
virtual xs_error_code_t NetworkConfigStaticIpMode_setIp(string ip) override { |
|
|
|
xs_error_code_t ecode; |
|
|
|
bool suc = false; |
|
|
|
uint32_t ip32 = (uint32_t)ipToUint32(ip.c_str(), suc); |
|
|
|
if (!suc) return kxs_ec_param_error; |
|
|
|
|
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = reg_write(reg::kstm32_ip, ip32, readbak); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
virtual xs_error_code_t NetworkConfigStaticIpMode_setMask(string mask) override { |
|
|
|
xs_error_code_t ecode; |
|
|
|
bool suc = false; |
|
|
|
uint32_t mask32 = (uint32_t)ipToUint32(mask.c_str(), suc); |
|
|
|
if (!suc) return kxs_ec_param_error; |
|
|
|
|
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = reg_write(reg::kstm32_netmask, mask32, readbak); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
virtual xs_error_code_t NetworkConfigStaticIpMode_setGateway(string gateway) override { |
|
|
|
xs_error_code_t ecode; |
|
|
|
bool suc = false; |
|
|
|
uint32_t gateway32 = (uint32_t)ipToUint32(gateway.c_str(), suc); |
|
|
|
if (!suc) return kxs_ec_param_error; |
|
|
|
|
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = reg_write(reg::kstm32_gw, gateway32, readbak); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
|
|
|
|
virtual xs_error_code_t NetworkConfigStaticIpMode_getIp(string &ip) override { |
|
|
|
uint32_t ip32; |
|
|
|
DO_XSYNC(reg_read(reg::kstm32_ip, ip32, 10)); |
|
|
|
ip = uint32ToIp(ip32); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
virtual xs_error_code_t NetworkConfigStaticIpMode_getMask(string &mask) override { |
|
|
|
uint32_t mask32; |
|
|
|
DO_XSYNC(reg_read(reg::kstm32_netmask, mask32, 10)); |
|
|
|
|
|
|
|
mask = uint32ToIp(mask32); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
virtual xs_error_code_t NetworkConfigStaticIpMode_getGateway(string &gateway) override { |
|
|
|
uint32_t gateway32; |
|
|
|
DO_XSYNC(reg_read(reg::kstm32_gw, gateway32, 10)); |
|
|
|
|
|
|
|
gateway = uint32ToIp(gateway32); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
|
|
|
|
virtual void registerOnTimecodeMsgCallback(xsync_on_timecode_msg_t cb) override { m_on_timecode_msg_cb = cb; } |
|
|
|
virtual void registerOnCameraSyncMsgCallback(xsync_on_camera_sync_msg_t cb) override { m_on_camera_sync_msg_cb = cb; } |
|
|
|
virtual void registerOnRecordSigChangeMsgCallback(xsync_on_record_sig_change_msg_t cb) override { m_on_record_sig_change_msg_cb = cb; } |
|
|
@ -355,7 +424,18 @@ Xsync &Xsync::Ins() { |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::readSn(string &sn) { |
|
|
|
sn = "X1001000000000"; |
|
|
|
uint32_t sn0; |
|
|
|
uint32_t sn1; |
|
|
|
uint32_t sn2; |
|
|
|
|
|
|
|
DO_XSYNC(reg_read(reg::ksn_id0, sn0)); |
|
|
|
DO_XSYNC(reg_read(reg::ksn_id1, sn1)); |
|
|
|
DO_XSYNC(reg_read(reg::ksn_id2, sn2)); |
|
|
|
|
|
|
|
char buf[128] = {0}; |
|
|
|
sprintf(buf, "%02d%02d%04d", sn0, sn1, sn2); |
|
|
|
sn = buf; |
|
|
|
|
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::readMac(string &mac) { |
|
|
|