📄 rightlogin.cpp
字号:
CString str;
str.Format(IDS_CHNL_FMT, i+1);
cbb->AddString(str);
}
}
void fill_combo_inputs(LPCTSTR alias, CComboBox* cbb)
{
if( !cbb )
return;
cbb->ResetContent();
int cnt = get_chnls(alias);
if( !cnt )
return;
ULONG ip;
USHORT port;
get_addr(alias,ip,port);
if(!(check_2000_version(ip,port) ||check_2100_version(ip,port)))
{
if(get_chnls(alias) > 8)
cnt = 9;
}
for( int i=0; i<cnt; i++ )
{
CString str;
str.Format(IDS_INPUT_FMT, i+1);
cbb->AddString(str);
}
}
void get_disk_info(ULONG ip, USHORT port)
{
CRightLogin* l = CRightLogin::the_one();
ip_port ipp = ip_port(ip, port);
channel_info* ci = l->cmgr.find(ipp);
if( !ci ) return;
net_get_disk_info(l->net,ip, port);
}
void get_addr(LPCTSTR alias, ULONG& ip, USHORT& port)
{
CRightLogin* l = CRightLogin::the_one();
ip_port ipp = l->ipmgr.trans_ip(alias);
for(int i=0; i<m_station_length; i++)
{
Remote_Station_setting *p = &m_station[i];
if(strcmp(p->name, m_login_client_name))
continue;
if(!strcmp(alias, p->dvrname))
{
ip = net_get_host_by_name(l->net, p->ip);
port = p->port;
return ;
}
}
ip = ipp.get_ip();
port = ipp.look_port();
}
void set_net_opt(LPCTSTR alias, DWORD opt, void* stuff,
OPT_SET_CALLEE cb)
{
CRightLogin* l = CRightLogin::the_one();
ULONG ip;
USHORT port;
get_addr(alias, ip, port);
net_set_options(l->net, ip, port, (NET_OPTIONS)opt, stuff, cb);
}
void get_net_opt(LPCTSTR alias, DWORD opt, int channel, OPT_GET_CALLEE cb)
{
CRightLogin* l = CRightLogin::the_one();
ULONG ip;
USHORT port;
get_addr(alias, ip, port);
ip_port ipp(ip, port);
channel_info* ci = l->cmgr.find(ipp);
if( !ci ) return;
if(ci->get_channels() == channel) return;
net_get_options(l->net, ip, port, (NET_OPTIONS)opt, channel, cb);
}
void get_net_opt_file(LPCTSTR alias, byte * m_byte, OPT_GET_CALLEE cb)
{
CRightLogin* l = CRightLogin::the_one();
ULONG ip;
USHORT port;
get_addr(alias, ip, port);
ip_port ipp(ip, port);
channel_info* ci = l->cmgr.find(ipp);
if( !ci ) return;
net_get_options_file(l->net, ip, port, m_byte, cb);
}
void get_net_opt_backup_file(LPCTSTR alias, byte * m_byte, OPT_GET_CALLEE cb)
{
CRightLogin* l = CRightLogin::the_one();
ULONG ip;
USHORT port;
get_addr(alias, ip, port);
ip_port ipp(ip, port);
channel_info* ci = l->cmgr.find(ipp);
if( !ci ) return;
net_get_options_backup_file(l->net, ip, port, m_byte, cb);
}
int get_chnls(CString dvrname)
{
CRightLogin* l = CRightLogin::the_one();
for( int i=0; i<l->cmgr.count(); i++ )
{
channel_info& ref = l->cmgr[i];
if(ref.get_dvrname()==dvrname)
{
if(ref.logintrue())
return ref.get_channels();
else return 0;
}
}
return 0;
}
USHORT get_port(ULONG ip)
{
CRightLogin* l = CRightLogin::the_one();
for( int i=0; i<l->cmgr.count(); i++ )
{
channel_info& ref = l->cmgr[i];
if(ref.get_ip() == ip)
return ref.look_port();
}
return 8101;
}
int get_chnls(ULONG ip, USHORT port)
{
CRightLogin* l = CRightLogin::the_one();
ip_port ipp(ip, port);
channel_info* ci = l->cmgr.find(ipp);
if( !ci )
return 0;
return ci->get_channels();
}
int get_chnls(LPCTSTR alias)
{
CRightLogin* l = CRightLogin::the_one();
ip_port ipp = l->ipmgr.trans_ip(alias);
channel_info* ci = l->cmgr.find(ipp);
if( !ci )
{
CString m_str;
m_str = alias;
return get_chnls(m_str);
}
return ci->get_channels();
}
bool check_4004_version(ULONG ip, USHORT port)
{
return check_version(ip, port, priv4VERSION);
}
bool check_4008_version(ULONG ip, USHORT port)
{
return (check_version(ip, port, priv6008V)||
check_version(ip, port, priv6008)||
check_version(ip, port, priv4008VERSION));
}
bool check_16_version(ULONG ip, USHORT port)
{
return (check_version(ip, port, priv6016)||
check_version(ip, port, priv6016A8)||
check_version(ip, port, priv6016V));
}
bool check_2000_version(ULONG ip, USHORT port)
{
return check_version(ip, port, priv2000VERSION);
}
bool check_2100_version(ULONG ip, USHORT port)
{
return check_version(ip, port, priv2100VERSION);
}
bool check_version(ULONG ip, USHORT port, PRIVILEGE version)
{
CRightLogin* l = CRightLogin::the_one();
ip_port ipp=ip_port(ip,port);
channel_info* ci = l->cmgr.find(ipp);
if( !ci ) return false;
if(ci->privilege() == version)
return true;
else
return false;
}
bool check_sel_channel(ULONG ip, USHORT port, int m_channel)
{
CRightLogin* l = CRightLogin::the_one();
ip_port ipp=ip_port(ip,port);
channel_info* ci = l->cmgr.find(ipp);
if( !ci ) return false;
if(m_channel == ci->get_channels()) return true;
else return false;
}
CString get_dvrname(const ip_port& ipp)
{
CRightLogin* l = CRightLogin::the_one();
channel_info* ci = l->cmgr.find(ipp);
if( !ci ) return "";
return ci->get_dvrname();
}
CString get_alias(const ip_port& ipp)
{
CRightLogin* l = CRightLogin::the_one();
return l->ipmgr.get_alias(ipp.get_ip(), ipp.look_port());
}
MSG3(ele_map_open_vedio, CRightLogin )
{
ULONG ip = (ULONG) w;
USHORT port = HSHORT(l);
SHORT channel = LSHORT(l);
ULONG temip = ip;
byte* i = (byte*)&temip;
byte* p_i = (byte*)&ip;
p_i[0] = i[3];
p_i[1] = i[2];
p_i[2] = i[1];
p_i[3] = i[0];
ip_port ipport = ip_port(ip, port);
open_channel_map_video(ipport, channel-1);
return true;
}
//对讲
MSG3(on_begin_talk, CRightLogin )
{
ULONG ip = (ULONG) w;
USHORT port = (USHORT) l;
check_talk_condition(ip, port, true);
CToolbarBottom *p = CToolbarBottom::m_ptool;
p->PostMessage(NTM_CMD_TALKING, 0, 0);
info_balloon(IDS_BEGIN_TALKING_OK);
CString m_str;
m_str.Format(IDS_BEGIN_TALKING_OK);
write_log_file(m_str);
return 0;
}
MSG3(on_fail_talk, CRightLogin)
{
ULONG ip = (ULONG) w;
USHORT port = (USHORT) l;
check_talk_condition(ip, port, false);
CToolbarBottom *p = CToolbarBottom::m_ptool;
p->PostMessage(NTM_CMD_TALKING, 0, 0);
info_balloon(IDS_REQUEST_TALKING_FAILE);
return 0;
}
bool start_talk()
{
CRightLogin* l = CRightLogin::the_one();
video_channel* p = video_channel::current_sel();
if(!p) return false;
if(p->is_video_opened() && !p->is_vod() && !m_talk[p->index()])
{
ip_port ipp = p->channel_ip();
net_start_talk(l->net, ipp.get_ip(),ipp.look_port(), p->channel_index(), l->m_hWnd);
return true;
}
else
{
AfxMessageBox(IDS_TALK_OPEN_VIDEO);
return false;
}
return false;
}
bool CRightLogin::stop_talk(video_channel* p)
{
if(p->is_video_opened() && !p->is_vod() && m_talk[p->index()])
{
ip_port ipp = p->channel_ip();
net_stop_talk(net, ipp.get_ip(), ipp.look_port()) ;
check_talk_condition(ipp.get_ip(), ipp.look_port(), false);
return true;
}
else return false;
return false;
}
bool stop_talk()
{
CRightLogin* l = CRightLogin::the_one();
video_channel* p = video_channel::current_sel();
if(!p) return false;
return l->stop_talk(p);
}
bool talk_status()
{
CRightLogin* l = CRightLogin::the_one();
video_channel* p = video_channel::current_sel();
if(!p) return false;
if(p->is_video_opened() && !p->is_vod())
{
return m_talk[p->index()];
}
return false;
}
void check_talk_condition(ULONG ip, USHORT port, bool m_bool)
{
for( int i=0; i<video_channel_count(); i++ )
{
video_channel* p = get_video_channel(i);
if(p->is_video_opened() && ip == p->channel_ip().get_ip() && port == p->channel_ip().look_port() && !p->is_vod())
{
m_talk[p->index()] = m_bool;
}
}
}
void start_bk(LPCTSTR alias, void* opt, BACKUP_CALLEE cb)
{
CRightLogin* l = CRightLogin::the_one();
ULONG ip;
USHORT port;
get_addr(alias, ip, port);
net_start_backup(l->net, ip, port,
(TREC_BACKUPTIME*)opt,
cb);
}
void stop_bk(LPCTSTR alias)
{
CRightLogin* l = CRightLogin::the_one();
ULONG ip;
USHORT port;
get_addr(alias, ip, port);
net_stop_backup(l->net, ip, port) ;
}
PRIVILEGE get_priv(LPCTSTR alias)
{
CRightLogin* l = CRightLogin::the_one();
ip_port ipp = l->ipmgr.trans_ip(alias);
return get_priv(ipp.get_ip(), ipp.look_port());
}
PRIVILEGE get_priv(ULONG ip, USHORT port)
{
CRightLogin* l = CRightLogin::the_one();
return net_get_privilege(l->net, ip, port);
}
void send_alarm_output(ULONG ip, USHORT port, int output)
{
CRightLogin* l = CRightLogin::the_one();
net_openalarm_output(l->net, ip, port, output);
}
int CRightLogin::get_vod_window_open(ULONG ip, USHORT port)
{
int m_vod_window_numbers=0;
for( int i=0; i<video_channel_count(); i++ )
{
video_channel* p = get_video_channel(i);
ip_port ipp = p->channel_ip();
if(ipp.get_ip() == ip && ipp.look_port() == port)
if(p->is_vod())
m_vod_window_numbers++;
}
return m_vod_window_numbers;
}
/*
* 从CRightVOD传来
*/
//##ModelId=3F90BAB103AE
LRESULT CRightLogin::on_open_vod(WPARAM w, LPARAM l)
{
video_channel* p=NULL;
ip_port* ipp = (ip_port*)l;
ULONG ip = ipp->get_ip();
USHORT port = ipp->look_port();
if(get_vod_window_open(ip, port) >= COUNTS_VOD_WINDOWS)
{
AfxMessageBox(IDS_MAX_VOD);
return 0;
}
for(int m=0;m<m_login_dvr_length;m++)
{
nt_cmd_login_ok * kk = &m_login_dvr_popedom[m];
if(kk->ip == ip && kk->port == port)
{
if(kk->version)
{
p=choosewindowfree();
break;
}
else
{
UpdateData(true);
p=choosewindow(l);
break;
}
}
}
if( p == NULL ) return 0;
net_start_vod(
net,
ipp->get_ip(),
ipp->look_port(),
(TREC_FILETIME*)w,
p->index(),
p->m_hWnd);
return 0;
}
video_channel*CRightLogin::choosewindowfree()
{
video_channel* p = video_channel::current_sel();
if( p->is_video_opened() )
{
p = NULL;
for( int i=0; i<video_channel_count(); i++ )
{
video_channel* vc = get_video_channel(i);
if( vc && !vc->is_video_opened() )
{
p = vc;
break;
}
}
}
return p;
}
video_channel*CRightLogin::choosewindow(LPARAM l)
{
ip_port* ipp = (ip_port*)l;
video_channel* p;
for(int i=0;i<cmgr.count();i++)
{
channel_info& ref = cmgr[i];
if(!ref.logintrue()) continue;
if(ipp->get_ip() == ref.get_ip() && ipp->look_port() == ref.look_port())
{
if(ref.get_window()>=0)
{
p = get_video_channel(ref.get_window());
if(p->is_vod())
{
on_close_vod(p);
return p;
}
else
{
if(!p->is_video_opened())
return p;
}
}
p = choosewindowfree();
if(!p) return NULL;
channel_info ci(ref.get_dvrname(),ref.get_ip(), ref.look_port(), ref.get_channels(), ref.privilege(),TRUE,p->index());
cmgr.remove(ref);
cmgr.add(ci);
return p;
}
}
return NULL;
}
void CRightLogin::on_close_vod(video_channel *p)
{
if(!p || !p->is_vod()) return ;
ULONG ip = p->channel_ip().get_ip();
USHORT port = p->channel_ip().look_port();
int window = p->index();
PostMessage(NTM_CMD_CHANNEL_CLOSED, ip, MAKEDWORD(port, p->channel_index()));
p->SendMessage(NTM_CMD_CHANNEL_CLOSED, ip, MAKEDWORD(port, p->channel_index()));
net_stop_vod(net, ip, port, window);
}
//##ModelId=3F90BAB103D6
LRESULT CRightLogin::on_close_vod(WPARAM, LPARAM)
{
video_channel* p = video_channel::current_sel();
on_close_vod(p);
return 0;
}
//##ModelId=3F90BAB20016
LRESULT CRightLogin::on_set_vod_speed(WPARAM w, LPARAM)
{
video_channel* p = video_channel::current_sel();
if(!p) p = get_video_channel(0);
if(!p) return 0;
net_set_vod_mul_speed(net,p->channel_ip().get_ip(),(VOD_SPEED)w,p->index());
return 0;
}
//##ModelId=3F90BAB20052
LRESULT CRightLogin::on_local_rec(WPARAM w, LPARAM l)
{
BOOL begin = LOWORD(w);
TCHAR drive = HIWORD(w);
video_channel* vc = (video_channel*)l;
int group = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -