DVBCore  17.9.0
Open Source DVB Engine
 All Data Structures Files Functions Typedefs Macros Pages
Macros | Typedefs | Enumerations | Functions
ap_ciop.c File Reference

Application level CI Operator Profile functions. More...

#include <stdio.h>
#include <string.h>
#include "techtype.h"
#include "dbgfuncs.h"
#include "stbhwos.h"
#include "stberc.h"
#include "stbheap.h"
#include "stbuni.h"
#include "dba.h"
#include "app.h"
#include "ap_dbacc.h"
#include "ap_dbdef.h"
#include "ap_ci.h"
#include "ap_state.h"
#include "stbci.h"
#include "ap_ci_int.h"
#include "ap_ci_support.h"
#include "ap_ciop.h"

Macros

#define DEBUG_OP
 
#define DBG_OP(x,...)   STB_SPDebugWrite( "%s:%d " x, __FUNCTION__, __LINE__, ##__VA_ARGS__);
 
#define CIP_SERVICE_TYPE_TV   0x00000001 /* MPEG2 TV */
 
#define CIP_SERVICE_TYPE_RADIO   0x00000002 /* MPEG1 Layer-II radio */
 
#define CIP_SERVICE_TYPE_TELETEXT   0x00000004 /* Teletext */
 
#define CIP_SERVICE_TYPE_AVC_RADIO   0x00000008 /* AVC radio */
 
#define CIP_SERVICE_TYPE_DATA   0x00000010 /* Data */
 
#define CIP_SERVICE_TYPE_HD_TV   0x00000020 /* MPEG2 HD TV */
 
#define CIP_SERVICE_TYPE_AVC_SD_TV   0x00000040 /* AVC SD TV */
 
#define CIP_SERVICE_TYPE_AVC_HD_TV   0x00000080 /* AVC HD TV */
 
#define CIP_DELIVERY_TYPE_DVBT   0x0001
 
#define CIP_DELIVERY_TYPE_DVBT2   0x0002
 
#define CIP_DELIVERY_TYPE_DVBC   0x0004
 
#define CIP_DELIVERY_TYPE_DVBC2   0x0008
 
#define CIP_DELIVERY_TYPE_DVBS   0x0010
 
#define CIP_DELIVERY_TYPE_DVBS2   0x0020
 
#define CIP_APP_TYPE_MHEG   0x0001
 
#define CIP_APP_TYPE_HBBTV   0x0002
 
#define CIP_APP_TYPE_OIPF   0x0004
 
#define INVALID_MODULE   0xFFFFFFFF
 

Typedefs

typedef struct ci_operator_nit S_CIP_OPERATOR_NIT
 
typedef struct ci_host_info S_CIP_HOST_INFO
 
typedef struct ci_operator_search S_CIP_OPERATOR_SEARCH
 
typedef struct s_op_status S_OP_STATUS
 

Enumerations

enum  E_CIP_OPERATOR_SEARCH_REQUEST_TYPE { CIP_OPERATOR_SEARCH_DEFERRED, CIP_OPERATOR_SEARCH_IMMEDIATE, CIP_OPERATOR_SEARCH_SCHEDULED }
 

Functions

void ACI_OpInitialise (void)
 Initialise CI Operator Profile support.
 
void ACI_OpSlotRemove (U8BIT slot_id)
 Process CAM removal from slot for CA support. More...
 
BOOLEAN ACI_RequestOperatorStatus (U32BIT module)
 Called by the host to request changing to an operator profile and request the operator status to be sent. More...
 
BOOLEAN ACI_OperatorExit (void)
 Request the current operator module to exit operator profile. More...
 
BOOLEAN ACI_StartOperatorSearch (U32BIT module)
 Called by the app to start an operator profile search that has been requested. More...
 
BOOLEAN ACI_FindOperatorProfileModule (U32BIT cicam_id, U32BIT *module)
 Returns the Operator Profile module associated with a CICAM ID. More...
 
void ACI_OpNotifyOperatorStatus (U32BIT module, S_STB_CI_OPERATOR_STATUS *status)
 This function is called by the CI+ stack to deliver the operator status to the host. This should be called if the CICAM supports the Operator Profile. This provides the module to be used for other Operator Profile related calls. More...
 
void ACI_OpNotifyOperatorInfo (U32BIT module, U8BIT info_version, S_STB_CI_OPERATOR_INFO *info)
 This function is called by the CI+ stack to deliver the operator information to the host. More...
 
void ACI_OpNotifyOperatorTune (U32BIT module, U16BIT desc_loop_len, U8BIT *desc_loop)
 This function is called by the CI+ stack to request that the host performs the tune request as described in the provided descriptors. The descriptor loop contains system delivery descriptors which the host must try in order until either an error condition is raised, the tune operation is successful or the descriptor loop is exhausted. The operation of the host should follow the pseudo code in section 14.7.5.11. When the tune attempt is done, the host must call the function ACI_OpSendOperatorTuneStatus with the results of the tune attempt. This function may be called during a profile search sequence. More...
 
void ACI_OpNotifyOperatorSearchStatus (U32BIT module, S_STB_CI_OPERATOR_STATUS *status)
 This function is called by the CI+ stack to deliver the operator search status to the host. This function will be called at the end of a profile search sequence. More...
 
void ACI_OpNotifyOperatorNit (U32BIT module, U16BIT nit_loop_length, U8BIT *nit_sections)
 This function is called by the CI+ stack to deliver the operator NIT to the host. The CICAM delivers zero or more NIT sections to the host. Each section is a complete NIT section including the CRC-32 field, and the sections are provided without any padding between them. The NIT section data must be copied if it used after this function returns. More...
 
BOOLEAN ACI_OpAskRelease (U32BIT module)
 Ask the opertaor module to restore replaced PIDs. More...
 
BOOLEAN ACI_OpTuneReply (U8BIT path, U32BIT module, E_STB_CI_TUNE_STATUS status)
 This function is called by the host to send the status of the tune operation to the module. More...
 

Detailed Description

Application level CI Operator Profile functions.

Date
December 2016
Author
Adam Sturtridge

Function Documentation

BOOLEAN ACI_FindOperatorProfileModule ( U32BIT  cicam_id,
U32BIT *  module 
)

Returns the Operator Profile module associated with a CICAM ID.

Parameters
cicam_idCICAM ID
modulePointer to the Operator Profile module
Returns
TRUE if the module could be found, FALSE otherwise
BOOLEAN ACI_OpAskRelease ( U32BIT  module)

Ask the opertaor module to restore replaced PIDs.

Parameters
modulespecifies module required
Returns
TRUE if operation successful, FALSE otherwise
BOOLEAN ACI_OperatorExit ( void  )

Request the current operator module to exit operator profile.

Returns
TRUE if request succeeded, FALSE otherwise
void ACI_OpNotifyOperatorInfo ( U32BIT  module,
U8BIT  info_version,
S_STB_CI_OPERATOR_INFO *  info 
)

This function is called by the CI+ stack to deliver the operator information to the host.

Parameters
moduleoperator profile module
info_versionoperator information version
infooperator information or NULL (if not valid)
void ACI_OpNotifyOperatorNit ( U32BIT  module,
U16BIT  nit_loop_length,
U8BIT *  nit_sections 
)

This function is called by the CI+ stack to deliver the operator NIT to the host. The CICAM delivers zero or more NIT sections to the host. Each section is a complete NIT section including the CRC-32 field, and the sections are provided without any padding between them. The NIT section data must be copied if it used after this function returns.

Parameters
module- operator profile module
nit_loop_length- length of NIT loop in bytes (may be 0)
nit_sections- NIT section(s), if any
void ACI_OpNotifyOperatorSearchStatus ( U32BIT  module,
S_STB_CI_OPERATOR_STATUS *  status 
)

This function is called by the CI+ stack to deliver the operator search status to the host. This function will be called at the end of a profile search sequence.

Parameters
moduleoperator profile module
statusoperator status
void ACI_OpNotifyOperatorStatus ( U32BIT  module,
S_STB_CI_OPERATOR_STATUS *  status 
)

This function is called by the CI+ stack to deliver the operator status to the host. This should be called if the CICAM supports the Operator Profile. This provides the module to be used for other Operator Profile related calls.

Parameters
moduleoperator profile module
statusoperator status
void ACI_OpNotifyOperatorTune ( U32BIT  module,
U16BIT  desc_loop_len,
U8BIT *  desc_loop 
)

This function is called by the CI+ stack to request that the host performs the tune request as described in the provided descriptors. The descriptor loop contains system delivery descriptors which the host must try in order until either an error condition is raised, the tune operation is successful or the descriptor loop is exhausted. The operation of the host should follow the pseudo code in section 14.7.5.11. When the tune attempt is done, the host must call the function ACI_OpSendOperatorTuneStatus with the results of the tune attempt. This function may be called during a profile search sequence.

Parameters
moduleoperator profile module
desc_loop_lenlength of descriptor loop in bytes
desc_loopthe descriptor loop
void ACI_OpSlotRemove ( U8BIT  slot_id)

Process CAM removal from slot for CA support.

Parameters
slot_idCI slot identifier
BOOLEAN ACI_OpTuneReply ( U8BIT  path,
U32BIT  module,
E_STB_CI_TUNE_STATUS  status 
)

This function is called by the host to send the status of the tune operation to the module.

Parameters
path- decode path used for tuning
module- host control module
status- tune operation status
Returns
TRUE if operation succeeded, FALSE otherwise
BOOLEAN ACI_RequestOperatorStatus ( U32BIT  module)

Called by the host to request changing to an operator profile and request the operator status to be sent.

Parameters
module- operator profile module
Returns
TRUE if request succeeded, FALSE otherwise
BOOLEAN ACI_StartOperatorSearch ( U32BIT  module)

Called by the app to start an operator profile search that has been requested.


Parameters
module- operator module
Returns
TRUE if the search is started, FALSE otherwise