.ic_delete = caclient_class_delete,
.ic_moveup = caclient_class_moveup,
.ic_movedown = caclient_class_movedown,
+ .ic_groups = (const property_group_t[]) {
+ {
+ .name = N_("Client"),
+ .number = 1,
+ },
+ {}
+ },
.ic_properties = (const property_t[]){
{
.type = PT_STR,
.opts = PO_RDONLY | PO_HIDDEN | PO_NOUI,
.get = caclient_class_class_get,
.set = caclient_class_class_set,
+ .group = 1,
},
{
.type = PT_INT,
.name = N_("Index"),
.opts = PO_RDONLY | PO_HIDDEN | PO_NOUI,
.off = offsetof(caclient_t, cac_index),
+ .group = 1,
},
{
.type = PT_BOOL,
.name = N_("Enabled"),
.desc = N_("Enable/Disable CA client."),
.off = offsetof(caclient_t, cac_enabled),
+ .group = 1,
},
{
.type = PT_STR,
.desc = N_("Name of the client."),
.off = offsetof(caclient_t, cac_name),
.notify = idnode_notify_title_changed_lang,
+ .group = 1,
},
{
.type = PT_STR,
.name = N_("Comment"),
.desc = N_("Free-form text field, enter whatever you like."),
.off = offsetof(caclient_t, cac_comment),
+ .group = 1,
},
{
.type = PT_STR,
.name = N_("Status"),
.get = caclient_class_status_get,
.opts = PO_RDONLY | PO_HIDDEN | PO_NOSAVE | PO_NOUI,
+ .group = 1,
},
{ }
}
.desc = N_("Client node ID. Leave field empty to generate a random ID."),
.set = caclient_cccam_nodeid_set,
.get = caclient_cccam_nodeid_get,
- .group = 1,
+ .group = 2,
},
{
.type = PT_INT,
.list = caclient_cccam_class_cccam_version_list,
.def.i = CCCAM_VERSION_2_3_0,
.opts = PO_DOC_NLIST,
- .group = 1,
+ .group = 2,
},
{
.type = PT_INT,
.desc = N_("Keepalive interval in seconds"),
.off = offsetof(cccam_t, cc_keepalive_interval),
.def.i = CCCAM_KEEPALIVE_INTERVAL,
- .group = 3,
+ .group = 4,
},
{ }
}
.ic_caption = N_("Card client"),
.ic_groups = (const property_group_t[]) {
{
- .name = N_("Login information"),
+ .name = N_("Client"),
.number = 1,
},
{
- .name = N_("EMM"),
+ .name = N_("Login information"),
.number = 2,
},
{
- .name = N_("Connection"),
+ .name = N_("EMM"),
.number = 3,
},
+ {
+ .name = N_("Connection"),
+ .number = 4,
+ },
{}
},
.ic_properties = (const property_t[]){
.desc = N_("Login username."),
.off = offsetof(cclient_t, cc_username),
.opts = PO_TRIM,
- .group = 1,
+ .group = 2,
},
{
.type = PT_STR,
.desc = N_("Login password."),
.off = offsetof(cclient_t, cc_password),
.opts = PO_PASSWORD,
- .group = 1,
+ .group = 2,
},
{
.type = PT_STR,
.off = offsetof(cclient_t, cc_hostname),
.def.s = "localhost",
.opts = PO_TRIM,
- .group = 1,
+ .group = 2,
},
{
.type = PT_INT,
.name = N_("Port"),
.desc = N_("Port to connect to."),
.off = offsetof(cclient_t, cc_port),
- .group = 1,
+ .group = 2,
},
{
.type = PT_BOOL,
.desc = N_("Enable/disable offering of Entitlement Management Message updates."),
.off = offsetof(cclient_t, cc_emm),
.def.i = 1,
- .group = 2,
+ .group = 3,
},
{
.type = PT_BOOL,
.desc = N_("Update Entitlement Management Messages from one mux only."),
.off = offsetof(cclient_t, cc_emmex),
.def.i = 1,
- .group = 2,
+ .group = 3,
},
{
.type = PT_INT,
.desc = N_("Keepalive interval in seconds"),
.off = offsetof(cclient_t, cc_keepalive_interval),
.def.i = CC_KEEPALIVE_INTERVAL,
- .group = 3,
+ .group = 4,
},
{ }
}
return constcw_class_key_get(o, ccw->ccw_key_odd);
}
+static property_group_t caclient_ic_groups[] = {
+ {
+ .name = N_("Client"),
+ .number = 1,
+ },
+ {
+ .name = N_("Filter"),
+ .number = 2,
+ },
+ {
+ .name = N_("Keys"),
+ .number = 3,
+ },
+ {}
+};
+
const idclass_t caclient_ccw_csa_cbc_class =
{
.ic_super = &caclient_class,
.desc = N_("Conditional Access Identification."),
.off = offsetof(constcw_t, ccw_caid),
.opts = PO_HEXA,
- .def.u16 = 0x2600
+ .def.u16 = 0x2600,
+ .group = 2,
},
{
.type = PT_U32,
.desc = N_("The provider's ID."),
.off = offsetof(constcw_t, ccw_providerid),
.opts = PO_HEXA,
- .def.u32 = 0
+ .def.u32 = 0,
+ .group = 2,
},
{
.type = PT_U16,
.off = offsetof(constcw_t, ccw_tsid),
.opts = PO_HEXA,
.def.u16 = 1,
+ .group = 2,
},
{
.type = PT_U16,
.off = offsetof(constcw_t, ccw_sid),
.opts = PO_HEXA,
.def.u16 = 1,
+ .group = 2,
},
{
.type = PT_STR,
.get = constcw_class_key_even_get,
.opts = PO_PASSWORD,
.def.s = "00:00:00:00:00:00:00:00",
+ .group = 3,
},
{
.type = PT_STR,
.get = constcw_class_key_odd_get,
.opts = PO_PASSWORD,
.def.s = "00:00:00:00:00:00:00:00",
+ .group = 3,
},
{ }
}
.ic_super = &caclient_class,
.ic_class = "caclient_ccw_des_ncb",
.ic_caption = N_("DES NCB Constant Code Word"),
+ .ic_groups = caclient_ic_groups,
.ic_properties = (const property_t[]){
{
.type = PT_U16,
.desc = N_("Conditional Access Identification."),
.off = offsetof(constcw_t, ccw_caid),
.opts = PO_HEXA,
- .def.u16 = 0x2600
+ .def.u16 = 0x2600,
+ .group = 2,
},
{
.type = PT_U32,
.desc = N_("The provider's ID."),
.off = offsetof(constcw_t, ccw_providerid),
.opts = PO_HEXA,
- .def.u32 = 0
+ .def.u32 = 0,
+ .group = 2,
},
{
.type = PT_U16,
.off = offsetof(constcw_t, ccw_tsid),
.opts = PO_HEXA,
.def.u16 = 1,
+ .group = 2,
},
{
.type = PT_U16,
.off = offsetof(constcw_t, ccw_sid),
.opts = PO_HEXA,
.def.u16 = 1,
+ .group = 2,
},
{
.type = PT_STR,
.get = constcw_class_key_even_get,
.opts = PO_PASSWORD,
.def.s = "00:00:00:00:00:00:00:00",
+ .group = 3,
},
{
.type = PT_STR,
.get = constcw_class_key_odd_get,
.opts = PO_PASSWORD,
.def.s = "00:00:00:00:00:00:00:00",
+ .group = 3,
},
{ }
}
.ic_super = &caclient_class,
.ic_class = "caclient_ccw_aes_ecb",
.ic_caption = N_("AES ECB Constant Code Word"),
+ .ic_groups = caclient_ic_groups,
.ic_properties = (const property_t[]){
{
.type = PT_U16,
.desc = N_("Conditional Access Identification."),
.off = offsetof(constcw_t, ccw_caid),
.opts = PO_HEXA,
- .def.u16 = 0x2600
+ .def.u16 = 0x2600,
+ .group = 2,
},
{
.type = PT_U32,
.desc = N_("The provider's ID."),
.off = offsetof(constcw_t, ccw_providerid),
.opts = PO_HEXA,
- .def.u32 = 0
+ .def.u32 = 0,
+ .group = 2,
},
{
.type = PT_U16,
.off = offsetof(constcw_t, ccw_tsid),
.opts = PO_HEXA,
.def.u16 = 1,
+ .group = 2,
},
{
.type = PT_U16,
.off = offsetof(constcw_t, ccw_sid),
.opts = PO_HEXA,
.def.u16 = 1,
+ .group = 2,
},
{
.type = PT_STR,
.get = constcw_class_key_even_get,
.opts = PO_PASSWORD,
.def.s = "00:00:00:00:00:00:00:00",
+ .group = 3,
},
{
.type = PT_STR,
.get = constcw_class_key_odd_get,
.opts = PO_PASSWORD,
.def.s = "00:00:00:00:00:00:00:00",
+ .group = 3,
},
{ }
}
.ic_super = &caclient_class,
.ic_class = "caclient_ccw_aes128_ecb",
.ic_caption = N_("AES128 ECB Constant Code Word"),
+ .ic_groups = caclient_ic_groups,
.ic_properties = (const property_t[]){
{
.type = PT_U16,
.off = offsetof(constcw_t, ccw_caid),
.opts = PO_HEXA,
.def.u16 = 0x2600,
+ .group = 2,
},
{
.type = PT_U32,
.desc = N_("The provider's ID."),
.off = offsetof(constcw_t, ccw_providerid),
.opts = PO_HEXA,
- .def.u32 = 0
+ .def.u32 = 0,
+ .group = 2,
},
{
.type = PT_U16,
.off = offsetof(constcw_t, ccw_tsid),
.opts = PO_HEXA,
.def.u16 = 1,
+ .group = 2,
},
{
.type = PT_U16,
.off = offsetof(constcw_t, ccw_sid),
.opts = PO_HEXA,
.def.u16 = 1,
+ .group = 2,
},
{
.type = PT_STR,
.get = constcw_class_key_even_get,
.opts = PO_PASSWORD,
.def.s = "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
+ .group = 3,
},
{
.type = PT_STR,
.get = constcw_class_key_odd_get,
.opts = PO_PASSWORD,
.def.s = "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
+ .group = 3,
},
{ }
}
.get = caclient_cwc_class_deskey_get,
.opts = PO_PASSWORD,
.def.s = "00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d",
- .group = 1,
+ .group = 2,
},
{ }
}
.ic_super = &caclient_class,
.ic_class = "caclient_dvbcam",
.ic_caption = N_("Linux DVB CAM Client"),
+ .ic_groups = (const property_group_t[]) {
+ {
+ .name = N_("Client"),
+ .number = 1,
+ },
+ {
+ .name = N_("Common Interface"),
+ .number = 2,
+ },
+ {}
+ },
.ic_properties = (const property_t[]){
{
.type = PT_INT,
.name = N_("Service limit"),
.desc = N_("Limit of concurrent descrambled services (per one CAM)."),
.off = offsetof(dvbcam_t, limit),
+ .group = 2,
},
{
.type = PT_INT,
.list = caclient_dvbcam_class_caid_selection_list,
.off = offsetof(dvbcam_t, caid_select),
.opts = PO_DOC_NLIST,
+ .group = 2,
},
{
.type = PT_STR,
"E.g. '0D00,0F00,0100'."),
.set = caclient_dvbcam_class_caid_list_set,
.get = caclient_dvbcam_class_caid_list_get,
+ .group = 2,
},
{}
}