Make some modifications to the API to make bindings easier
[deb_shairplay.git] / src / lib / dnssd.m
index 1335a73d115dcc2dd78703b6f5a1d9506ce2bc7c..5f87b1f68111f4507b0bc18de4bcb01234698b27 100644 (file)
@@ -1,3 +1,17 @@
+/**
+ *  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;
 }
 
@@ -46,7 +50,7 @@ dnssd_destroy(dnssd_t *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)
 {
        char hwaddrstr[MAX_SERVNAME];
        NSString *serviceString;
@@ -61,7 +65,7 @@ dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port)
        }
 
        /* 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;
        }
@@ -96,7 +100,7 @@ dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port)
 }
 
 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;
@@ -111,7 +115,7 @@ dnssd_register_airplay(dnssd_t *dnssd, const char *name, unsigned short port)
        }
 
        /* 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;
        }