func processSnapshots(ip string, uid int64, login string, password string, device C.NET_DVR_DEVICEINFO) { var ip_count C.BYTE = 0 var ipcfg C.NET_DVR_IPPARACFG var written int32 // Getting count of IP cams if C.NET_DVR_GetDVRConfig( (C.LONG)(uid), C.NET_DVR_GET_IPPARACFG, 0, (C.LPVOID)(unsafe.Pointer(&ipcfg)), (C.DWORD)(unsafe.Sizeof(ipcfg)), (*C.uint32_t)(unsafe.Pointer(&written)), ) >= 0 { for i := 0; i < C.MAX_IP_CHANNEL && ipcfg.struIPChanInfo[i].byEnable == 1; i++ { ip_count++ } } // SHIT if ip_count != 0 || device.byChanNum != 0 { if device.byChanNum != 0 { getSnapshots( ip, uid, (int)(device.byStartChan), (int)(device.byChanNum), login, password, ) } if ip_count != 0 { getSnapshots( ip, uid, (int)(device.byStartChan)+32, (int)(ip_count), login, password, ) } } else { warn.Println("No cameras on", ip) } }
func getIpChannelsCount(uid int64) (count int) { var ipcfg C.NET_DVR_IPPARACFG var written int32 // Getting count of IP cams if C.NET_DVR_GetDVRConfig( (C.LONG)(uid), C.NET_DVR_GET_IPPARACFG, 0, (C.LPVOID)(unsafe.Pointer(&ipcfg)), (C.DWORD)(unsafe.Sizeof(ipcfg)), (*C.uint32_t)(unsafe.Pointer(&written)), ) >= 0 { for i := 0; i < C.MAX_IP_CHANNEL && ipcfg.struIPChanInfo[i].byEnable == 1; i++ { count++ } } return }