ATSC3  24.10.0
atsc_mw_service.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright © 2014 The DTVKit Open Software Foundation Ltd (www.dtvkit.org)
3  *
4  * This file is part of a DTVKit Software Component
5  * You are permitted to copy, modify or distribute this file subject to the terms
6  * of the DTVKit 1.0 Licence which can be found in licence.txt or at www.dtvkit.org
7  *
8  * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
9  * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
10  * OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
11  *
12  * If you or your organisation is not a member of DTVKit then you have access
13  * to this source code outside of the terms of the licence agreement
14  * and you are expected to delete this and any associated files immediately.
15  * Further information on DTVKit, membership and terms can be found at www.dtvkit.org
16  *******************************************************************************/
17 
18 #pragma once
19 #include <pthread.h>
20 #include <mutex>
21 
22 #include "atsc_types.h"
23 #include "atsc_core_utils_json.h"
25 #include "atsc_core.h"
26 
34 typedef struct {
35  uint32_t iSize;
36  uint8_t cCh;
37  uint8_t sData[2048];
39 
43 typedef struct {
44  int32_t iStartCh;
45  int32_t iEndCh;
46  int32_t iPlpId;
47  int32_t iTunerId;
50 }sFeScan_t;
51 
52 
56 class CMwService{
57 public:
64  CMwService();
65 
72  ~CMwService();
73 
80  int32_t GetSupportedStandards(void);
81 
88  int32_t GetAvailNoOfFrontendInstances(void);
89 
97 
104  eRegion_t GetRegion(void);
105 
113 
120  eDemod_t GetDemod( void );
121 
129  eATSCResult_t Frontend_TuneToChannel(int32_t iId,int32_t iCh,int32_t iPlp,
130  eDemod_t iDemod,eRegion_t iRegion);
131 
138  eATSCResult_t Frontend_TuneToChannel( int32_t iId, int32_t iCh,int32_t iPlp);
139 
147  eATSCResult_t Frontend_ScanChannels(int32_t iTunerId, int32_t iStartCh,
148  int32_t iEndCh, int32_t iDemod , int32_t iPlpId);
149 
157  eATSCResult_t Frontend_ScanChannels(int32_t iId, int32_t iStartCh,
158  int32_t iEndCh,int32_t iDemod,int32_t iPlp,
159  int32_t iRegion);
167 
174  eATSCResult_t Frontend_Start(int32_t iId);
175 
182  eATSCResult_t Frontend_Stop(int32_t iId);
183 
184 
191  eATSCResult_t Frontend_GetProperties( int32_t iId,sFeProp_t *pProps );
192 
193 
200  eATSCResult_t Frontend_GetStatus( int32_t iId , sFeStatus_t *pStatus );
201 
202 
209  eATSCResult_t Frontend_RegisterStatusEventCb(FeStatusCbFunc fStatusPtr);
210 
217  eATSCResult_t Frontend_RegisterParamEventCb(FeParamsCbFunc ptrfunc);
218 
226 
227  bool mScanning;
235  std::string GetQueryHttpResponse( std::string sContentData );
236 
243  std::string GetGuideInfo(char *sUri);
244 
251  std::string GetTunerInfo(sFeStatus_t *pStatus,int32_t iTunerId);
252 
259  std::string GetTunersInfo( void );
260 
267  std::string GetVersion( char *pVersion );
268 
275  std::string GetPrepareTunerInfo(int32_t iInstance , sFeStatus_t *pStatus);
276 
283  std::string GetDumpHistory(void);
284 
291  std::string RequestMWService(std::string sUri, char *pContentData);
292 
299  std::string RequestMWDump(std::string sUri, int32_t iHttpType);
300 
307  std::string MwRequestTuners(std::string sUri, char *pContentData);
308 
315  std::string MwRequestUserService(std::string sUri, char *pContentData );
316 
323  std::string MwRequestScan(std::string sUri, char *pContentData);
324 
331  void StartScan(sScanScenario_t *scenario);
332 
339  void StopScan( void );
340 
348 
355  std::list<sScanResult_t> GetScanningStatus( void );
356 
363  void ThreadScan();
364 
371  std::string GetSystemTime( void );
372 
379  sRrtDataTable_t GetRrt( void );
380 
387  void RegisterOnsnEventNotify(OnScreenNotify fParamsPtr);
388 
395  std::string GetFrontendConfiguration( void );
396 
403  void GetUserServiceInfo( int32_t iServiceId , int32_t iPhyCh , int32_t iMajorCh , int32_t iMinorCh );
404 
411  bool ChannelBasedTune( int32_t iUserCh );
412 
413 private:
414  bool mRunning;
416  int32_t mTunerId;
417  int32_t mInstances;
418  int32_t mChannel;
419  eRegion_t mRegion;
420  eDemod_t mDemod;
422  sFeStatus_t mTunerInfo[16];
423  std::thread *mAlpThread;
424  std::thread *mScanThread;
425  std::recursive_mutex mMut;
427  std::queue<sAlpBuffer_t> mAlpQueue;
428  std::map<uint32_t, CFeCtrl*>mTunerCtrl;
430  FeStatusCbFunc mFrontendStatusCb = nullptr;
431  FeParamsCbFunc mFrontendParamsCb = nullptr;
432  OnScreenNotify mOnScreenNotify = nullptr;
434  CAtscCore *mAtscCore;
436  sScanScenario_t mScanScenario;
437  std::list<sScanResult_t> mScanResult;
438  eScanResult scanstatus;
440  std::thread *mSystemTimeThread;
442 //private methods
449  eATSCResult_t OpenFrontend(int32_t iCount);
450 
457  eATSCResult_t StartService(void);
458 
465  void Frontend_CbDataEvent(sFeData_t *pData);
466 
473  void Frontend_CbNotifyEvent(sFeParams_t notify);
474 
481  void Frontend_CbStatusEvent( sFeStatus_t status);
482 
489  eATSCResult_t GetAlpData(uint8_t *pData, uint32_t *pSize, uint32_t *pCh);
490 
497  int32_t ProcessAlpData(int32_t iCh, uint8_t *pData, uint32_t iDataLen);
498 
505  void AlpDataHandlerThread( void );
506 
513  void ChannelScanHandlerThread( void );
514 
521  void ThreadOnscrenNotify(void);
522 };
eDemod_t
Definition: atsc_types.h:215
eRegion_t
Definition: atsc_types.h:227
eScanResult
Definition: atsc_types.h:244
eATSCResult_t
Definition: atsc_types.h:203
Definition: atsc_core.h:41
Definition: atsc_mw_service.h:56
eATSCResult_t Frontend_RegisterParamEventCb(FeParamsCbFunc ptrfunc)
Register frontend params callback.
Definition: atsc_mw_service.cpp:401
CMwService()
Constructor of CMwService.
Definition: atsc_mw_service.cpp:34
std::string RequestMWService(std::string sUri, char *pContentData)
Request for Services.
Definition: atsc_mw_service.cpp:741
std::string MwRequestUserService(std::string sUri, char *pContentData)
Request for User selected Service.
Definition: atsc_mw_service.cpp:719
void RegisterOnsnEventNotify(OnScreenNotify fParamsPtr)
Notification event for osn message.
Definition: atsc_mw_service.cpp:787
std::string GetDumpHistory(void)
Get the Dump data for the tuner information in the root path.
Definition: atsc_mw_service.cpp:697
~CMwService()
Destructor for CMwService.
Definition: atsc_mw_service.cpp:65
eATSCResult_t SetDemod(eDemod_t iDemod)
Set Demod type :Default :ATSC3.0.
Definition: atsc_mw_service.cpp:143
eATSCResult_t Frontend_RegisterStatusEventCb(FeStatusCbFunc fStatusPtr)
Register frontend status callback.
Definition: atsc_mw_service.cpp:386
int32_t GetSupportedStandards(void)
read supported standards
Definition: atsc_mw_service.cpp:92
eATSCResult_t Frontend_GetProperties(int32_t iId, sFeProp_t *pProps)
Read frontend properties.
Definition: atsc_mw_service.cpp:249
void StartScan(sScanScenario_t *scenario)
Request for Start Channel scanning.
Definition: atsc_mw_service.cpp:801
bool ChannelBasedTune(int32_t iUserCh)
Tune the service based on user selected channel.
Definition: atsc_mw_service.cpp:1219
std::string GetQueryHttpResponse(std::string sContentData)
Get the http response and query for the signaling methods.
Definition: atsc_mw_service.cpp:664
eDemod_t GetDemod(void)
returns current Demod ID
Definition: atsc_mw_service.cpp:160
sServiceListTable_t GetSltServiceData(void)
Get slt data.
Definition: atsc_mw_service.cpp:416
std::string GetPrepareTunerInfo(int32_t iInstance, sFeStatus_t *pStatus)
Prepare the tuner information in xml/json format.
Definition: atsc_mw_service.cpp:686
std::string GetVersion(char *pVersion)
Get the version of the MW application.
Definition: atsc_mw_service.cpp:675
std::string MwRequestTuners(std::string sUri, char *pContentData)
Request for Tuners.
Definition: atsc_mw_service.cpp:708
sRrtDataTable_t GetRrt(void)
To get the rating regional information.
Definition: atsc_mw_service.cpp:1196
bool mScanning
Definition: atsc_mw_service.h:227
std::string MwRequestScan(std::string sUri, char *pContentData)
Request for Scan.
Definition: atsc_mw_service.cpp:730
int32_t GetAvailNoOfFrontendInstances(void)
returns available number of frontend instances
Definition: atsc_mw_service.cpp:103
std::string RequestMWDump(std::string sUri, int32_t iHttpType)
Request for Dump data.
Definition: atsc_mw_service.cpp:754
std::string GetFrontendConfiguration(void)
Get the tuner related configuration.
Definition: atsc_mw_service.cpp:1174
eATSCResult_t Frontend_Start(int32_t iId)
Start frontend functionality.
Definition: atsc_mw_service.cpp:336
eRegion_t GetRegion(void)
returns current region ID
Definition: atsc_mw_service.cpp:132
std::string GetTunersInfo(void)
Get the Tuner Info for two instances and passed to web application.
Definition: atsc_mw_service.cpp:653
std::list< sScanResult_t > GetScanningStatus(void)
Request for getting scanning paremeters information.
Definition: atsc_mw_service.cpp:1139
eATSCResult_t Frontend_StopChannelScan(int32_t iId)
Stop channel scan.
Definition: atsc_mw_service.cpp:324
std::string GetSystemTime(void)
To get read system time.
Definition: atsc_mw_service.cpp:1185
Json::Value GetScanningInfo(void)
Request for getting scanning paremeters information.
Definition: atsc_mw_service.cpp:1067
void GetUserServiceInfo(int32_t iServiceId, int32_t iPhyCh, int32_t iMajorCh, int32_t iMinorCh)
To get the user selected service Information.
Definition: atsc_mw_service.cpp:1207
std::string GetGuideInfo(char *sUri)
Get the Guide information.
Definition: atsc_mw_service.cpp:625
void StopScan(void)
Request for Stop Channel scanning.
Definition: atsc_mw_service.cpp:816
eATSCResult_t Frontend_GetStatus(int32_t iId, sFeStatus_t *pStatus)
Read frontend status.
Definition: atsc_mw_service.cpp:370
eATSCResult_t SetRegion(eRegion_t iRegion)
Set region:Default :US.
Definition: atsc_mw_service.cpp:114
eATSCResult_t Frontend_Stop(int32_t iId)
Stop frontend functionality.
Definition: atsc_mw_service.cpp:352
void ThreadScan()
Thread handler to perform the channel scanning.
Definition: atsc_mw_service.cpp:828
std::string GetTunerInfo(sFeStatus_t *pStatus, int32_t iTunerId)
Get the Tuner Info and passed to web application.
Definition: atsc_mw_service.cpp:636
Represents a JSON value.
Definition: atsc_core_utils_json.h:635
Definition: atsc_mw_service.h:34
uint8_t cCh
Definition: atsc_mw_service.h:36
uint32_t iSize
Definition: atsc_mw_service.h:35
Definition: atsc_mw_frontend_control.h:76
Definition: atsc_types.h:325
Definition: atsc_types.h:338
Definition: atsc_mw_service.h:43
int32_t iEndCh
Definition: atsc_mw_service.h:45
int32_t iPlpId
Definition: atsc_mw_service.h:46
int32_t iStartCh
Definition: atsc_mw_service.h:44
int32_t iTunerId
Definition: atsc_mw_service.h:47
eDemod_t iDemod
Definition: atsc_mw_service.h:48
eRegion_t iRegionId
Definition: atsc_mw_service.h:49
Definition: atsc_types.h:302
Definition: atsc_types.h:507
Definition: atsc_types.h:397
Definition: atsc_types.h:651