Skip to content

Commit 223f83b

Browse files
DeltaMikeCharlieFlole998
authored andcommitted
Add subsystems to JSON API.
1 parent 4874aaa commit 223f83b

3 files changed

Lines changed: 77 additions & 9 deletions

File tree

src/api/api_config.c

Lines changed: 74 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@
2424
#include "api.h"
2525
#include "config.h"
2626

27+
//Needed to get the current trace/debug states for each subsystem.
28+
//Look in tvhlog.c for more details.
29+
#include "bitops.h"
30+
extern bitops_ulong_t tvhlog_debug[TVHLOG_BITARRAY]; //TVHLOG_BITARRAY is defined in bitops.h
31+
extern bitops_ulong_t tvhlog_trace[TVHLOG_BITARRAY];
32+
2733
static int
2834
api_config_capabilities(access_t *perm, void *opaque, const char *op,
2935
htsmsg_t *args, htsmsg_t **resp)
@@ -45,17 +51,78 @@ api_memoryinfo_grid
4551
}
4652
}
4753

54+
//Return a list of trace/debug subsystems and their description.
55+
static int
56+
api_subsystems_grid
57+
(access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp)
58+
{
59+
60+
int i;
61+
int counter = 0;
62+
int trace_count = 0;
63+
int debug_count = 0;
64+
65+
htsmsg_t *api_response;
66+
htsmsg_t *api_item;
67+
68+
api_response = htsmsg_create_list();
69+
70+
tvhlog_subsys_t *ts = tvhlog_subsystems;
71+
72+
for (i = 1, ts++; i < LS_LAST; i++, ts++)
73+
{
74+
api_item = htsmsg_create_map();
75+
htsmsg_add_u32(api_item, "id", i);
76+
htsmsg_add_str(api_item, "subsystem", ts->name);
77+
htsmsg_add_str(api_item, "description", _(ts->desc));
78+
79+
if(test_bit(i, tvhlog_trace))
80+
{
81+
trace_count++;
82+
htsmsg_add_bool(api_item, "trace", 1);
83+
}
84+
else
85+
{
86+
htsmsg_add_bool(api_item, "trace", 0);
87+
}
88+
89+
if(test_bit(i, tvhlog_debug))
90+
{
91+
debug_count++;
92+
htsmsg_add_bool(api_item, "debug", 1);
93+
}
94+
else
95+
{
96+
htsmsg_add_bool(api_item, "debug", 0);
97+
}
98+
99+
htsmsg_add_msg(api_response, NULL, api_item);
100+
101+
counter++;
102+
}
103+
104+
*resp = htsmsg_create_map();
105+
106+
htsmsg_add_msg(*resp, "entries", api_response);
107+
htsmsg_add_u32(*resp, "traceCount", trace_count);
108+
htsmsg_add_u32(*resp, "debugCount", debug_count);
109+
htsmsg_add_u32(*resp, "totalCount", counter);
110+
111+
return 0;
112+
}
113+
48114
void
49115
api_config_init ( void )
50116
{
51117
static api_hook_t ah[] = {
52-
{ "config/capabilities", ACCESS_OR|ACCESS_WEB_INTERFACE|ACCESS_HTSP_INTERFACE, api_config_capabilities, NULL },
53-
{ "config/load", ACCESS_ADMIN, api_idnode_load_simple, &config },
54-
{ "config/save", ACCESS_ADMIN, api_idnode_save_simple, &config },
55-
{ "tvhlog/config/load", ACCESS_ADMIN, api_idnode_load_simple, &tvhlog_conf },
56-
{ "tvhlog/config/save", ACCESS_ADMIN, api_idnode_save_simple, &tvhlog_conf },
57-
{ "memoryinfo/class", ACCESS_ADMIN, api_idnode_class, (void *)&memoryinfo_class },
58-
{ "memoryinfo/grid", ACCESS_ADMIN, api_idnode_grid, api_memoryinfo_grid },
118+
{ "config/capabilities", ACCESS_OR|ACCESS_WEB_INTERFACE|ACCESS_HTSP_INTERFACE, api_config_capabilities, NULL },
119+
{ "config/load", ACCESS_ADMIN, api_idnode_load_simple, &config },
120+
{ "config/save", ACCESS_ADMIN, api_idnode_save_simple, &config },
121+
{ "tvhlog/config/load", ACCESS_ADMIN, api_idnode_load_simple, &tvhlog_conf },
122+
{ "tvhlog/config/save", ACCESS_ADMIN, api_idnode_save_simple, &tvhlog_conf },
123+
{ "tvhlog/subsystem/grid", ACCESS_ADMIN, api_subsystems_grid, NULL },
124+
{ "memoryinfo/class", ACCESS_ADMIN, api_idnode_class, (void *)&memoryinfo_class },
125+
{ "memoryinfo/grid", ACCESS_ADMIN, api_idnode_grid, api_memoryinfo_grid },
59126
{ NULL },
60127
};
61128

src/bitops.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ typedef uint32_t bitops_ulong_t;
3131
#define BIT_WORD(bit) ((bit) / BITS_PER_LONG)
3232
#define BIT_MASK(bit) (((bitops_ulong_t)1) << ((bit) % BITS_PER_LONG))
3333

34+
#define TVHLOG_BITARRAY ((LS_LAST + (BITS_PER_LONG - 1)) / BITS_PER_LONG) //For tvhlog.c and api/api_config.c
35+
3436
static inline void set_bit(int bit, void *addr)
3537
{
3638
bitops_ulong_t *p = ((bitops_ulong_t *)addr) + BIT_WORD(bit);

src/tvhlog.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,11 @@
3636
#include "tcp.h"
3737
#include "webui/webui.h"
3838

39-
#define TVHLOG_BITARRAY ((LS_LAST + (BITS_PER_LONG - 1)) / BITS_PER_LONG)
40-
4139
int tvhlog_run;
4240
int tvhlog_level;
4341
int tvhlog_options;
4442
char *tvhlog_path;
43+
//TVHLOG_BITARRAY is defined in bitops.h
4544
bitops_ulong_t tvhlog_debug[TVHLOG_BITARRAY];
4645
bitops_ulong_t tvhlog_trace[TVHLOG_BITARRAY];
4746
pthread_t tvhlog_tid;

0 commit comments

Comments
 (0)