Пример #1
0
inline s32 Factory::AddDevice(DeviceParam & pParam)
{
	s32 nId = GetDeviceID();
	FactoryDeviceChangeData change;
	Device *pDevice = NULL;
	DeviceParam pParam2;

	Lock();
	pParam.m_Conf.data.conf.nId = nId;
	if (pParam.m_Conf.data.conf.nType == VSC_DEVICE_CAM)
	{
		m_DeviceMap[nId] = new Device(*m_pVdb, *m_pVHdfsdb, pParam);
		pDevice = m_DeviceMap[nId]; 
	}else
	{
		m_DeviceMap[nId] = NULL;
		return -1;
	}
	m_DeviceParamMap[nId] = pParam;
	m_DeviceOnlineMap[nId] = 0;
	m_Conf.AddDevice(pParam.m_Conf, nId);

	UnLock();
	change.id = nId;
	change.type = FACTORY_DEVICE_ADD;
	CallDeviceChange(change);

	/* Try to online the device and lock */
	Lock();
	pDevice->GetDeviceParam(pParam2);
	UnLock();

	pParam2.m_wipOnline = pParam2.CheckOnline();
	if (pParam2.m_OnlineUrl == FALSE)
	{
		pParam2.m_wipOnlineUrl = pParam2.UpdateUrl();
	}

	/* Try to make the device online */
	Lock();
	DeviceStatus bCheck = pDevice->CheckDevice(pParam2.m_strUrl, 
			pParam2.m_strUrlSubStream, pParam2.m_bHasSubStream, 
			pParam2.m_wipOnline, pParam2.m_wipOnlineUrl);

	FactoryDeviceChangeData change2;
	change2.id = nId;
	
	if (bCheck == DEV_OFF2ON)
	{
		change.type = FACTORY_DEVICE_ONLINE;
		m_DeviceOnlineMap[nId] = 1;
		UnLock(); 
		CallDeviceChange(change);
		Lock();
	}
	UnLock();
	
    	return nId;
}
Пример #2
0
inline BOOL Factory::StartRecord(s32 nIndex)
{
    DeviceParam pParam;
    FactoryDeviceChangeData change;
    if (nIndex <=0 || nIndex >= FACTORY_DEVICE_ID_MAX)
    {
        return FALSE;
    }
    GetDeviceParamById(pParam, nIndex);
    if (pParam.m_Conf.data.conf.Recording == 1)
    {
        return TRUE;
    }

    Lock();
    pParam.m_Conf.data.conf.Recording = 1;
    m_Conf.UpdateDeviceData(nIndex, pParam.m_Conf);
    m_DeviceParamMap[nIndex] = pParam;
    if (m_DeviceMap[nIndex] != NULL)
    {
        m_DeviceMap[nIndex]->SetRecord(TRUE);
        m_DeviceMap[nIndex]->StartRecord();
    }
    UnLock();
    change.id = nIndex;
    change.type = FACTORY_DEVICE_RECORDING_ON;
    CallDeviceChange(change);
    return TRUE;
}
Пример #3
0
inline s32 Factory::AddVGroup(VSCVGroupDataItem &pParam)
{
	VSCVGroupData VGroupData;
	FactoryDeviceChangeData change;
	int id = -1;
	Lock();
	m_Conf.GetVGroupData(VGroupData);
	/* Just use 1 to CONF_VGROUP_NUM_MAX */
	for (s32 i = 1; i < CONF_VGROUP_NUM_MAX; i ++)
	{
	    	if (VGroupData.data.conf.group[i].Used == 1)
	    	{
	    		continue;
	    	}else
	    	{
	    		memcpy(&(VGroupData.data.conf.group[i]), &pParam, 
							sizeof(VSCVGroupDataItem));
			VGroupData.data.conf.group[i].Used = 1;
			VGroupData.data.conf.group[i].nId = i;
			id = i;
			break;
	    	}
	}	
	m_Conf.UpdateVGroupData(VGroupData);
	UnLock();
	change.id = id;
	change.type = FACTORY_VGROUP_ADD;
	CallDeviceChange(change);
	return id;
}
Пример #4
0
inline BOOL Factory::DelDevice(s32 nIndex)
{
    FactoryDeviceChangeData change;
    VDC_DEBUG( "%s DelDevice %d\n",__FUNCTION__, nIndex);
    if (nIndex <=0 || nIndex >= FACTORY_DEVICE_ID_MAX)
    {
        return FALSE;
    }

    //TODO check is this device can be delete or not
    Lock();
    VDC_DEBUG( "%s Cleanup Begin\n",__FUNCTION__);
    m_DeviceMap[nIndex]->Cleanup();
    VDC_DEBUG( "%s Cleanup End\n",__FUNCTION__);
    delete m_DeviceMap[nIndex];
    m_DeviceMap[nIndex] = NULL;
    m_DeviceParamMap.erase(nIndex);
    m_DeviceMap.erase(nIndex);
    m_Conf.DelDevice(nIndex);
    UnLock();
    ReleaseDeviceID(nIndex);
	
    change.id = nIndex;
    change.type = FACTORY_DEVICE_DEL;
    CallDeviceChange(change);
    return TRUE;
}
Пример #5
0
inline s32 Factory::AddTour(VSCTourDataItem &pParam)
{
    VSCTourData TourData;
    FactoryDeviceChangeData change;
    int id = -1;
    Lock();
    m_Conf.GetTourData(TourData);
    /* Just use 1 to CONF_TOUR_NUM_MAX */
    for (s32 i = 1; i < CONF_TOUR_NUM_MAX; i ++)
    {
        if (TourData.data.conf.tour[i].Used == 1)
        {
            continue;
        } else
        {
            memcpy(&(TourData.data.conf.tour[i]), &pParam,
                   sizeof(VSCTourDataItem));
            TourData.data.conf.tour[i].Used = 1;
            TourData.data.conf.tour[i].nId = i;
            id = i;
            break;
        }
    }
    m_Conf.UpdateTourData(TourData);
    UnLock();
    change.id = id;
    change.type = FACTORY_TOUR_ADD;
    CallDeviceChange(change);
    return id;
}
Пример #6
0
inline BOOL Factory::DelVms(s32 Id)
{
    VSCVmsData * pVmsData = new VSCVmsData;
    VSCVmsData &VmsData = *pVmsData;
    FactoryDeviceChangeData change;
    Lock();
    m_Conf.GetVmsData(VmsData);
    if (Id < CONF_VMS_NUM_MAX && Id > 0)
    {
        VmsData.data.conf.vms[Id].Used = 0;
    } else
    {
        UnLock();
        delete pVmsData;
        return FALSE;
    }

    m_Conf.UpdateVmsData(VmsData);
    UnLock();
    change.id = Id;
    change.type = FACTORY_VMS_DEL;
    CallDeviceChange(change);

    delete pVmsData;
    return TRUE;
}
Пример #7
0
inline s32 Factory::AddVms(VSCVmsDataItem &pParam)
{
    VSCVmsData * pVmsData = new VSCVmsData;
    VSCVmsData &VmsData = *pVmsData;
    FactoryDeviceChangeData change;
    int id = -1;
    Lock();
    m_Conf.GetVmsData(VmsData);
    /* Just use 1 to CONF_VMS_NUM_MAX */
    for (s32 i = 1; i < CONF_VMS_NUM_MAX; i ++)
    {
        if (VmsData.data.conf.vms[i].Used == 1)
        {
            continue;
        } else
        {
            memcpy(&(VmsData.data.conf.vms[i]), &pParam, sizeof(VSCVmsDataItem));
            VmsData.data.conf.vms[i].Used = 1;
            VmsData.data.conf.vms[i].nId = i;
            id = i;
            break;
        }
    }
    m_Conf.UpdateVmsData(VmsData);
    UnLock();
    change.id = id;
    change.type = FACTORY_VMS_ADD;
    CallDeviceChange(change);

    delete pVmsData;
    return id;
}
Пример #8
0
inline s32 Factory::AddVIPC(VIPCDeviceParam & pParam)
{
    s32 nId = GetVIPCID();
    FactoryDeviceChangeData change;

    VDC_DEBUG( "%s GetDeviceID %d\n",__FUNCTION__, nId);

    Lock();
    pParam.m_Conf.data.conf.nId = nId;
    m_VIPCDeviceParamMap[nId] = pParam;

    m_Conf.AddVIPC(pParam.m_Conf, nId);
    UnLock();
    change.id = nId;
    change.type = FACTORY_VIPC_ADD;
    CallDeviceChange(change);
	
    return nId;
}
Пример #9
0
inline BOOL Factory::DelVGroup(s32 Id)
{
	VSCVGroupData VGroupData;
	FactoryDeviceChangeData change;
	Lock();
	m_Conf.GetVGroupData(VGroupData);
	if (Id < CONF_VGROUP_NUM_MAX && Id > 0)
	{
		VGroupData.data.conf.group[Id].Used = 0;
	}else
	{
		UnLock();
		return FALSE;
	}
	
	m_Conf.UpdateVGroupData(VGroupData);
	UnLock();
	change.id = Id;
	change.type = FACTORY_VGROUP_DEL;
	CallDeviceChange(change);
	return TRUE;
}
Пример #10
0
inline BOOL Factory::DelView(s32 Id)
{
	VSCViewData ViewData;
	FactoryDeviceChangeData change;
	Lock();
	m_Conf.GetViewData(ViewData);
	if (Id < CONF_VMS_NUM_MAX && Id > 0)
	{
		ViewData.data.conf.view[Id].Used = 0;
	}else
	{
		UnLock();
		return FALSE;
	}
	
	m_Conf.UpdateViewData(ViewData);
	UnLock();
	change.id = Id;
	change.type = FACTORY_VIEW_DEL;
	CallDeviceChange(change);
	return TRUE;
}
Пример #11
0
inline BOOL Factory::DelVIPC(s32 nIndex)
{
    FactoryDeviceChangeData change;
    VDC_DEBUG( "%s DelDevice %d\n",__FUNCTION__, nIndex);
    if (nIndex <=0 || nIndex >= FACTORY_DEVICE_ID_MAX)
    {
        return FALSE;
    }

    change.id = nIndex;
    change.type = FACTORY_VIPC_DEL;
    CallDeviceChange(change);
	
    Lock();
    m_VIPCDeviceParamMap.erase(nIndex);
    m_Conf.DelVIPC(nIndex);
    ReleaseVIPCID(nIndex);
    UnLock();
	

    return TRUE;
}
Пример #12
0
inline BOOL Factory::DelTour(s32 Id)
{
    VSCTourData TourData;
    FactoryDeviceChangeData change;
    Lock();
    m_Conf.GetTourData(TourData);
    if (Id < CONF_VMS_NUM_MAX && Id > 0)
    {
        TourData.data.conf.tour[Id].Used = 0;
    } else
    {
        UnLock();
        return FALSE;
    }

    m_Conf.UpdateTourData(TourData);
    UnLock();
    change.id = Id;
    change.type = FACTORY_TOUR_DEL;
    CallDeviceChange(change);
    return TRUE;
}
Пример #13
0
inline s32 Factory::AddDevice(DeviceParam & pParam)
{
    s32 nId = GetDeviceID();
    FactoryDeviceChangeData change;

    Lock();
    pParam.m_Conf.data.conf.nId = nId;
    if (pParam.m_Conf.data.conf.nType == VSC_DEVICE_CAM)
    {
    	m_DeviceMap[nId] = new Device(*m_pVdb, *m_pVHdfsdb, pParam);
    }else
    {
	m_DeviceMap[nId] = NULL;
    }
    m_DeviceParamMap[nId] = pParam;
    m_Conf.AddDevice(pParam.m_Conf, nId);

    UnLock();
    change.id = nId;
    change.type = FACTORY_DEVICE_ADD;
    CallDeviceChange(change);
	
    return nId;
}
Пример #14
0
inline BOOL Factory::UpdateDeviceGroup(s32 nIndex, s32 nGroup)
{
    DeviceParam pParam;
    FactoryDeviceChangeData change;
    if (nIndex <=0 || nIndex >= FACTORY_DEVICE_ID_MAX)
    {
        return FALSE;
    }
    GetDeviceParamById(pParam, nIndex);
    if (pParam.m_Conf.data.conf.GroupId == nGroup)
    {
        return TRUE;
    }

    Lock();
    pParam.m_Conf.data.conf.GroupId = nGroup;
    m_DeviceParamMap[nIndex] = pParam;
    m_Conf.UpdateDeviceData(nIndex, pParam.m_Conf);
    UnLock();
    change.id = nIndex;
    change.type = FACTORY_DEVICE_GROUP_CHANGE;
    CallDeviceChange(change);
    return TRUE;
}
Пример #15
0
inline void Factory::run()
{
	DeviceParamMap paramMap;
	/* Create the thread to update the Disk status */
	while (1)
	{
		paramMap.clear();
		{
			/* Got all the device param */
			Lock();
			DeviceMap::iterator it = m_DeviceMap.begin(); 
			for(; it!=m_DeviceMap.end(); ++it)
			{	
				s32 nIndex = (*it).first;
				DeviceParam pParam;
				m_DeviceMap[nIndex]->GetDeviceParam(pParam);
				paramMap[nIndex] = pParam;
			}
			UnLock();
		}
		{
			/* Loop all the deviceparam */
			DeviceParamMap::iterator it = paramMap.begin(); 
			for(; it!=paramMap.end(); ++it)
			{	
				/* Loop to check the device and update the url */
				s32 nIndex = (*it).first;
				(*it).second.m_wipOnline = (*it).second.CheckOnline();
				if ((*it).second.m_OnlineUrl == FALSE)
				{
					(*it).second.m_wipOnlineUrl = (*it).second.UpdateUrl();
				}
			}
		}
		{
			/* Loop all the deviceparam result and set to device */
			DeviceParamMap::iterator it = paramMap.begin(); 
			for(; it!=paramMap.end(); ++it)
			{	
				/* Loop to check the device and update the url */
				s32 nIndex = (*it).first;
				Lock();
				DeviceMap::iterator it1 = m_DeviceMap.find(nIndex), 
							ite1 = m_DeviceMap.end();

				if (it1 == ite1) 
				{
					/* the id may be delete */
					UnLock();
					continue;
				}

				DeviceStatus bCheck = m_DeviceMap[nIndex]->CheckDevice(
					(*it).second.m_strUrl, (*it).second.m_strUrlSubStream, 
					(*it).second.m_bHasSubStream, 
					(*it).second.m_wipOnline, (*it).second.m_wipOnlineUrl);
				
				FactoryDeviceChangeData change;
				change.id = nIndex;
				switch (bCheck)
				{
					case DEV_OFF2ON:
					{
						change.type = FACTORY_DEVICE_ONLINE;
						UnLock(); 
						CallDeviceChange(change);
						Lock();
						break;
					}
					case DEV_ON2OFF:
					{
						change.type = FACTORY_DEVICE_OFFLINE;
						UnLock(); 
						CallDeviceChange(change);
						Lock();
						break;
					}
					default:
					{

						break;
					}
				}
				UnLock();
			}
		}
		ve_sleep(1000 * 20);
	}
	
}