1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
/*
* Declaration file for the ossmix library.
*/
/*
*
* This file is part of Open Sound System.
*
* Copyright (C) 4Front Technologies 1996-2008.
*
* This this source file is released under GPL v2 license (no other versions).
* See the COPYING file included in the main directory of this source
* distribution for the license terms and conditions.
*
*/
typedef struct _ossmix_callback_parm ossmix_callback_parm_t;
typedef void (*ossmix_select_poll_t)(void);
typedef void (*ossmix_callback_t)(ossmix_callback_parm_t *parms);
extern int ossmix_init(void);
extern void ossmix_close(void);
extern void ossmix_timertick(void);
extern int ossmix_connect(const char *hostname, int port);
extern int ossmix_get_fd(ossmix_select_poll_t *cb);
extern void ossmix_set_callback(ossmix_callback_t cb);
extern void ossmix_disconnect(void);
extern int ossmix_get_nmixers(void);
extern int ossmix_get_mixerinfo(int mixernum, oss_mixerinfo *mi);
extern int ossmix_open_mixer(int mixernum);
extern void ossmix_close_mixer(int mixernum);
extern int ossmix_get_nrext(int mixernum);
extern int ossmix_get_nodeinfo(int mixernum, int node, oss_mixext *ext);
extern int ossmix_get_enuminfo(int mixernum, int node, oss_mixer_enuminfo *ei);
extern int ossmix_get_description(int mixernum, int node, oss_mixer_enuminfo *desc);
extern int ossmix_get_value(int mixernum, int ctl, int timestamp);
extern void ossmix_set_value(int mixernum, int ctl, int timestamp, int value);
struct _ossmix_callback_parm
{
int event;
#define OSSMIX_EVENT_VALUE 1000001 // p1=mixnum, p2=node, p3=value
#define OSSMIX_EVENT_NEWMIXER 1000002 // p1=nmixers
int p1, p2, p3, p4, p5;
};
#ifdef OSSMIX_REMOTE
/*
* This block contains definitions that cannot be used by client applications
*/
typedef struct
{
int cmd;
#define OSSMIX_CMD_HALOO 0 /* Haloo means hello in finnish */
#define OSSMIX_CMD_OK 0
#define OSSMIX_CMD_ERROR -1
#define OSSMIX_CMD_INIT 1
#define OSSMIX_CMD_EXIT 2
#define OSSMIX_CMD_GET_NMIXERS 3
#define OSSMIX_CMD_GET_MIXERINFO 4
#define OSSMIX_CMD_OPEN_MIXER 5
#define OSSMIX_CMD_CLOSE_MIXER 6
#define OSSMIX_CMD_GET_NREXT 7
#define OSSMIX_CMD_GET_NODEINFO 8
#define OSSMIX_CMD_GET_ENUMINFO 9
#define OSSMIX_CMD_GET_DESCRIPTION 10
#define OSSMIX_CMD_GET_VALUE 11
#define OSSMIX_CMD_SET_VALUE 12
#define OSSMIX_CMD_GET_ALL_VALUES 13
#define OSSMIX_CMD_START_EVENTS 14
int p1, p2, p3, p4, p5;
#define OSSMIX_P1_MAGIC 0x12345678
int ack_rq;
int unsolicited;
int payload_size;
} ossmix_commad_packet_t;
#define MAX_NODES 32
#define MAX_TMP_MIXER 64 /* Must be multiple of 8 */
#define MAX_TMP_NODES 1024 /* Must be multiple of 8 */
typedef struct
{
int node;
int value;
} value_record_t;
typedef value_record_t value_packet_t[MAX_TMP_NODES];
typedef struct
{
int nrext;
oss_mixext *nodes[MAX_TMP_NODES];
int values[MAX_TMP_NODES];
unsigned char changemask[MAX_TMP_NODES/8];
} local_mixer_t;
extern void mixc_add_node(int mixernum, int node, oss_mixext *ext);
extern oss_mixext *mixc_get_node(int mixernum, int node);
extern void mixc_set_value(int mixernum, int node, int value);
extern void mixc_clear_changeflags(int mixernum);
extern int mixc_get_value(int mixernum, int node);
extern int mixc_get_all_values(int mixernum, value_packet_t value_packet, int changechec);
#endif
|