Desc: Commands sent to the UPS drivers File: commands.txt Date: 9 January 2004 Auth: Russell Kroll upsd can call drivers to store values in read/write variables and to kick off instant commands. This is how you register handlers for those events. The driver core (drivers/main.c) has a structure called upsh. You should populate it with function pointers in your upsdrv_initinfo() function. Right now, there are only two possibilities: - setvar = setting UPS variables (SET VAR protocol command) - instcmd = instant UPS commands (INSTCMD protocol command) SET --- If your driver's function for handling variable set events is called my_ups_set(), then you'd do this to add the pointer: upsh.setvar = my_ups_set; my_ups_set() will receive two parameters: const char * - the variable being changed const char * - the new value You should return either STAT_SET_HANDLED if your driver recognizes the command, or STAT_SET_UNKNOWN if it doesn't. Other possibilities will be added at some point in the future. INSTCMD ------- This works just like the set process, with slightly different values arriving from the server. upsh.instcmd = my_ups_cmd; Your function will receive two args: const char * - the command name const char * - (reserved) You should return either STAT_INSTCMD_HANDLED or STAT_INSTCMD_UNKNOWN depending on whether your driver can handle the requested command. Notes ----- Use strcasecmp. The command names arriving from upsd should be treated without regards to case. Responses --------- Drivers will eventually be expected to send responses to commands. Right now, there is no channel to get these back through upsd to the client, so this is not implemented. This will probably be implemented with a polling scheme in the clients.