1/********************************************************************* 2 * 3 * Filename: irias_object.h 4 * Version: 5 * Description: 6 * Status: Experimental. 7 * Author: Dag Brattli <dagb@cs.uit.no> 8 * Created at: Thu Oct 1 22:49:50 1998 9 * Modified at: Wed Dec 15 11:20:57 1999 10 * Modified by: Dag Brattli <dagb@cs.uit.no> 11 * 12 * Copyright (c) 1998-1999 Dag Brattli, All Rights Reserved. 13 * 14 * This program is free software; you can redistribute it and/or 15 * modify it under the terms of the GNU General Public License as 16 * published by the Free Software Foundation; either version 2 of 17 * the License, or (at your option) any later version. 18 * 19 * Neither Dag Brattli nor University of Tromsø admit liability nor 20 * provide warranty for any of this software. This material is 21 * provided "AS-IS" and at no charge. 22 * 23 ********************************************************************/ 24 25#ifndef LM_IAS_OBJECT_H 26#define LM_IAS_OBJECT_H 27 28#include <net/irda/irda.h> 29#include <net/irda/irqueue.h> 30 31/* LM-IAS Attribute types */ 32#define IAS_MISSING 0 33#define IAS_INTEGER 1 34#define IAS_OCT_SEQ 2 35#define IAS_STRING 3 36 37/* Object ownership of attributes (user or kernel) */ 38#define IAS_KERNEL_ATTR 0 39#define IAS_USER_ATTR 1 40 41/* 42 * LM-IAS Object 43 */ 44struct ias_object { 45 irda_queue_t q; /* Must be first! */ 46 magic_t magic; 47 48 char *name; 49 int id; 50 hashbin_t *attribs; 51}; 52 53/* 54 * Values used by LM-IAS attributes 55 */ 56struct ias_value { 57 __u8 type; /* Value description */ 58 __u8 owner; /* Managed from user/kernel space */ 59 int charset; /* Only used by string type */ 60 int len; 61 62 /* Value */ 63 union { 64 int integer; 65 char *string; 66 __u8 *oct_seq; 67 } t; 68}; 69 70/* 71 * Attributes used by LM-IAS objects 72 */ 73struct ias_attrib { 74 irda_queue_t q; /* Must be first! */ 75 int magic; 76 77 char *name; /* Attribute name */ 78 struct ias_value *value; /* Attribute value */ 79}; 80 81struct ias_object *irias_new_object(char *name, int id); 82void irias_insert_object(struct ias_object *obj); 83int irias_delete_object(struct ias_object *obj); 84int irias_delete_attrib(struct ias_object *obj, struct ias_attrib *attrib, 85 int cleanobject); 86void __irias_delete_object(struct ias_object *obj); 87 88void irias_add_integer_attrib(struct ias_object *obj, char *name, int value, 89 int user); 90void irias_add_string_attrib(struct ias_object *obj, char *name, char *value, 91 int user); 92void irias_add_octseq_attrib(struct ias_object *obj, char *name, __u8 *octets, 93 int len, int user); 94int irias_object_change_attribute(char *obj_name, char *attrib_name, 95 struct ias_value *new_value); 96struct ias_object *irias_find_object(char *name); 97struct ias_attrib *irias_find_attrib(struct ias_object *obj, char *name); 98 99struct ias_value *irias_new_string_value(char *string); 100struct ias_value *irias_new_integer_value(int integer); 101struct ias_value *irias_new_octseq_value(__u8 *octseq , int len); 102struct ias_value *irias_new_missing_value(void); 103void irias_delete_value(struct ias_value *value); 104 105extern struct ias_value irias_missing; 106extern hashbin_t *irias_objects; 107 108#endif 109