#ifndef PLD_H
#define PLD_H
-#include "command.h"
+#include <helper/command.h>
-struct pld_device_s;
+struct pld_device;
-typedef struct pld_driver_s
+#define __PLD_DEVICE_COMMAND(name) \
+ COMMAND_HELPER(name, struct pld_device *pld)
+
+struct pld_driver
{
char *name;
- int (*register_commands)(struct command_context_s *cmd_ctx);
- int (*pld_device_command)(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct pld_device_s *pld_device);
- int (*load)(struct pld_device_s *pld_device, char *filename);
-} pld_driver_t;
+ __PLD_DEVICE_COMMAND((*pld_device_command));
+ const struct command_registration *commands;
+ int (*load)(struct pld_device *pld_device, const char *filename);
+};
+
+#define PLD_DEVICE_COMMAND_HANDLER(name) static __PLD_DEVICE_COMMAND(name)
-typedef struct pld_device_s
+struct pld_device
{
- pld_driver_t *driver;
+ struct pld_driver *driver;
void *driver_priv;
- struct pld_device_s *next;
-} pld_device_t;
+ struct pld_device *next;
+};
+
+int pld_register_commands(struct command_context *cmd_ctx);
-extern int pld_register_commands(struct command_context_s *cmd_ctx);
-extern int pld_init(struct command_context_s *cmd_ctx);
-extern pld_device_t *get_pld_device_by_num(int num);
+struct pld_device *get_pld_device_by_num(int num);
#define ERROR_PLD_DEVICE_INVALID (-1000)
#define ERROR_PLD_FILE_LOAD_FAILED (-1001)