0125aea53cd7ab5fb1b341ba52ba42870519b861
[olsrd.git] / lib / powerinfo / src / olsrd_power.h
1
2 /*
3  * Copyright (c) 2004, Andreas T√łnnesen(andreto-at-olsr.org)
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without 
7  * modification, are permitted provided that the following conditions 
8  * are met:
9  *
10  * * Redistributions of source code must retain the above copyright notice, 
11  *   this list of conditions and the following disclaimer.
12  * * Redistributions in binary form must reproduce the above copyright notice, 
13  *   this list of conditions and the following disclaimer in the documentation 
14  *   and/or other materials provided with the distribution.
15  * * Neither the name of the UniK olsr daemon nor the names of its contributors 
16  *   may be used to endorse or promote products derived from this software 
17  *   without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
22  * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
23  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
24  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
26  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
27  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
28  * OF THE POSSIBILITY OF SUCH DAMAGE.
29  *
30  */
31
32 /*
33  * Dynamic linked library example for UniK OLSRd
34  */
35
36 #ifndef _OLSRD_PLUGIN_TEST
37 #define _OLSRD_PLUGIN_TEST
38
39 #include "olsrd_plugin.h"
40
41 #define IPC_PORT           8888
42
43 #define EMISSION_INTERVAL  2.5
44 /* Database entry */
45
46 struct pwrentry
47 {
48   union olsr_ip_addr originator;  /* IP address of the node this entry describes */
49   olsr_u8_t          source_type; /* Powersource of the node */
50   olsr_u8_t          percentage;  /* Percentage of battery power left */
51   olsr_u16_t         time_left;   /* Operation time left on battery */
52   struct timeval     timer;       /* Validity time */
53   struct pwrentry    *next;       /* Next element in line */
54   struct pwrentry    *prev;       /* Previous elemnt in line */
55 };
56
57
58 /* The database - (using hashing) */
59 struct pwrentry list[HASHSIZE];
60
61
62 #define SOURCE_AC      0
63 #define SOURCE_BATTERY 1
64
65 int has_apm;
66
67 #define APM_PROC "/proc/apm"
68
69
70 struct olsr_apm_info
71 {
72   char driver_version[10];
73   int apm_version_major;
74   int apm_version_minor;
75   int apm_flags;
76   int ac_line_status;
77   int battery_status;
78   int battery_flags;
79   int battery_percentage;
80   int battery_time;
81   int using_minutes;
82 };
83
84 /*
85  * "Private" functions.
86  */
87
88 /* Timeout function to register with the sceduler */
89 void
90 olsr_timeout();
91
92 /* Parser function to register with the sceduler */
93 void
94 olsr_parser(union olsr_message *, struct interface *, union olsr_ip_addr *);
95
96 /* Event function to register with the sceduler */
97 void
98 olsr_event();
99
100 int 
101 apm_read(struct olsr_apm_info *);
102
103 void
104 ipc_action(int fd);
105
106 int
107 get_powerstatus(struct powermsg *);
108
109 int
110 update_power_entry(union olsr_ip_addr *, struct powermsg *, double);
111
112 void
113 print_power_table();
114
115 #endif