playersd.h
1/*
2 * Player - One Hell of a Robot Server
3 * Copyright (C) 2007
4 * Brian Gerkey
5 *
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 *
21 */
22/*
23 * Player - One Hell of a Robot Server
24 * Copyright (C) 2007
25 * Brian Gerkey
26 *
27 *
28 * This library is free software; you can redistribute it and/or
29 * modify it under the terms of the GNU Lesser General Public
30 * License as published by the Free Software Foundation; either
31 * version 2.1 of the License, or (at your option) any later version.
32 *
33 * This library is distributed in the hope that it will be useful,
34 * but WITHOUT ANY WARRANTY; without even the implied warranty of
35 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
36 * Lesser General Public License for more details.
37 *
38 * You should have received a copy of the GNU Lesser General Public
39 * License along with this library; if not, write to the Free Software
40 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
41 */
42
43/*
44 * Interface to libplayersd
45 *
46 * $Id$
47 */
48
58#ifndef _PLAYER_SD_H
59#define _PLAYER_SD_H
60
61#ifdef __cplusplus
62extern "C" {
63#endif
64
65#include <libplayerinterface/player.h>
66
67#define PLAYER_SD_SERVICENAME "_player31._tcp"
68#define PLAYER_SD_DEVICE_TXTNAME "device"
69#define PLAYER_SD_NAME_MAXLEN 256
70#define PLAYER_SD_TXT_MAXLEN 256
71
73typedef struct player_sd_dev
74{
75 // Is this entry valid?
76 uint8_t valid;
77 // Name of the device
78 char name[PLAYER_SD_NAME_MAXLEN];
79 // Is the address valid?
80 uint8_t addr_valid;
81 // Did address resolution fail?
82 uint8_t addr_fail;
83 // Player address components
84 char hostname[PLAYER_SD_NAME_MAXLEN];
85 uint32_t robot;
86 uint16_t interf;
87 uint16_t index;
89
101
105
108
111
114
118 const char* name,
119 player_devaddr_t addr);
120
124 const char* name);
125
129 player_sd_dev_t* dev);
130
144 double timeout,
145 int keepalive,
147
157int player_sd_update(player_sd_t* sd, double timeout);
158
161
163// Common functions, implemented in playersd.c
164
168
185 player_sd_dev_t* result,
186 size_t result_len,
187 const char* name,
188 const char* hostname,
189 int robot,
190 int interf,
191 int index);
192
196
199
200#ifdef __cplusplus
201}
202#endif
203
206#endif
int player_sd_unregister(player_sd_t *sd, const char *name)
Unregister (terminate) the named device.
struct player_sd_dev player_sd_dev_t
A device, represented by its name and address.
void player_sd_fini(player_sd_t *sd)
Finalize service discovery, freeing associated resources.
player_sd_dev_t * _player_sd_add_device(player_sd_t *sd, const char *name)
Add a device to the local cache.
int player_sd_find_devices(player_sd_t *sd, player_sd_dev_t *result, size_t result_len, const char *name, const char *hostname, int robot, int interf, int index)
Find a device in the local cache that matches the given criteria.
void player_sd_unlock(player_sd_t *sd)
Unlock access to playersd structures, such as the local device cache.
void player_sd_printcache(player_sd_t *sd)
Print the contents of the local device cache to the console.
void player_sd_lock(player_sd_t *sd)
Lock access to playersd structures, such as the local device cache.
struct player_sd player_sd_t
Service discovery object.
player_sd_dev_t * player_sd_get_device(player_sd_t *sd, const char *name)
Look up a device by name.
void(* player_sd_browse_callback_fn_t)(player_sd_t *sd, player_sd_dev_t *dev)
Prototype for a callback function that can be invoked when devices are added or removed.
Definition playersd.h:128
#define PLAYER_SD_NAME_MAXLEN
A device, represented by its name and address.
Definition playersd.h:69
player_sd_t * player_sd_init(void)
Initialize service discovery, passing back a pointer that will be passed into all future calls.
int player_sd_browse_stop(player_sd_t *sd)
Stop browsing. Returns 0 on success, non-zero on error.
int player_sd_register(player_sd_t *sd, const char *name, player_devaddr_t addr)
Register the named device.
int player_sd_browse(player_sd_t *sd, double timeout, int keepalive, player_sd_browse_callback_fn_t cb)
Browse for player devices.
int player_sd_update(player_sd_t *sd, double timeout)
Check for new device updates, waiting for timeout s.
A device address.
Definition player.h:146
A device, represented by its name and address.
Definition playersd.h:74
Service discovery object.
Definition playersd.h:92
void * sdRef
Opaque pointer to underlying zeroconf client object.
Definition playersd.h:95
player_sd_dev_t * devs
List of devices discovered by browsing.
Definition playersd.h:97
size_t devs_len
Number of devices discovered.
Definition playersd.h:99