+/**
+ * Copyright (C) 2011-2012 Juho Vähä-Herttua
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ */
+
#include <stdlib.h>
#include "dnssd.h"
#define MAX_SERVNAME 256
struct dnssd_s {
- char hwaddr[MAX_HWADDR_LEN];
- int hwaddrlen;
-
NSNetService *raopService;
NSNetService *airplayService;
};
dnssd_t *
-dnssd_init(const char *hwaddr, int hwaddrlen, int *error)
+dnssd_init(int *error)
{
dnssd_t *dnssd;
if (error) *error = DNSSD_ERROR_NOERROR;
- if (hwaddrlen > MAX_HWADDR_LEN) {
- if (error) *error = DNSSD_ERROR_HWADDRLEN;
- return NULL;
- }
dnssd = calloc(1, sizeof(dnssd_t));
if (!dnssd) {
if (error) *error = DNSSD_ERROR_OUTOFMEM;
return NULL;
}
- memcpy(dnssd->hwaddr, hwaddr, hwaddrlen);
- dnssd->hwaddrlen = hwaddrlen;
-
return dnssd;
}
}
int
-dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port)
+dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port, const char *hwaddr, int hwaddrlen, int password)
{
char hwaddrstr[MAX_SERVNAME];
NSString *serviceString;
}
/* Convert the hardware address to string */
- ret = utils_hwaddr_raop(hwaddrstr, sizeof(hwaddrstr), dnssd->hwaddr, dnssd->hwaddrlen);
+ ret = utils_hwaddr_raop(hwaddrstr, sizeof(hwaddrstr), hwaddr, hwaddrlen);
if (ret < 0) {
return -2;
}
[txtDict setValue:[NSString stringWithUTF8String:RAOP_DA] forKey:@"da"];
[txtDict setValue:[NSString stringWithUTF8String:RAOP_SR] forKey:@"sr"];
[txtDict setValue:[NSString stringWithUTF8String:RAOP_SS] forKey:@"ss"];
- [txtDict setValue:[NSString stringWithUTF8String:RAOP_PW] forKey:@"pw"];
+ if (password) {
+ [txtDict setValue:@"true" forKey:@"pw"];
+ } else {
+ [txtDict setValue:@"false" forKey:@"pw"];
+ }
[txtDict setValue:[NSString stringWithUTF8String:RAOP_VN] forKey:@"vn"];
[txtDict setValue:[NSString stringWithUTF8String:RAOP_TP] forKey:@"tp"];
[txtDict setValue:[NSString stringWithUTF8String:RAOP_MD] forKey:@"md"];
}
int
-dnssd_register_airplay(dnssd_t *dnssd, const char *name, unsigned short port)
+dnssd_register_airplay(dnssd_t *dnssd, const char *name, unsigned short port, const char *hwaddr, int hwaddrlen)
{
NSMutableDictionary *txtDict;
NSData *txtData;
}
/* Convert hardware address to string */
- ret = utils_hwaddr_airplay(deviceid, sizeof(deviceid), dnssd->hwaddr, dnssd->hwaddrlen);
+ ret = utils_hwaddr_airplay(deviceid, sizeof(deviceid), hwaddr, hwaddrlen);
if (ret < 0) {
return -2;
}