aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>2014-09-21 16:54:00 +0900
committerTakashi Sakamoto <o-takashi@sakamocchi.jp>2014-09-21 16:54:00 +0900
commitd479f9da998208cf29d163e10dbd2f36f56b3971 (patch)
tree5de31415e0af5bc6274ebe4a67abf757604a1da3 /include
parent337580293fd680689dc064c52b31ad3c2e2df0c8 (diff)
downloadlibhinawa-d479f9da998208cf29d163e10dbd2f36f56b3971.tar.gz
Renew basic processing.
Diffstat (limited to 'include')
-rw-r--r--include/efw.h15
-rw-r--r--include/fcp.h15
-rw-r--r--include/fw.h51
-rw-r--r--include/hinawa.h10
-rw-r--r--include/reactor.h44
-rw-r--r--include/snd.h15
6 files changed, 150 insertions, 0 deletions
diff --git a/include/efw.h b/include/efw.h
new file mode 100644
index 0000000..0765056
--- /dev/null
+++ b/include/efw.h
@@ -0,0 +1,15 @@
+#ifndef __ALSA_TOOLS_HINAWA_EFW__
+#define __ALSA_TOOLS_HINAWA_EFW__
+
+#include "snd.h"
+
+typedef struct hinawa_efw_transaction HinawaEfwTransaction;
+HinawaEfwTransaction *hinawa_efw_transaction_create(int *err);
+void hinawa_efw_transaction_run(HinawaEfwTransaction *trans, HinawaSndUnit *unit,
+ unsigned int category, unsigned int command,
+ uint32_t *args, unsigned int args_count,
+ uint32_t *params, unsigned int *params_count,
+ int *err);
+void hinawa_efw_transaction_destroy(HinawaEfwTransaction *trans);
+
+#endif
diff --git a/include/fcp.h b/include/fcp.h
new file mode 100644
index 0000000..cf351dc
--- /dev/null
+++ b/include/fcp.h
@@ -0,0 +1,15 @@
+#ifndef __ALSA_TOOLS_HINAWA_FCP__
+#define __ALSA_TOOLS_HINAWA_FCP__
+
+#include "fw.h"
+
+typedef struct hinawa_fcp_transaction HinawaFcpTransaction;
+
+HinawaFcpTransaction *hinawa_fcp_transaction_create(int *err);
+
+void hinawa_fcp_transaction_run(HinawaFcpTransaction *trans, HinawaFwUnit *unit,
+ uint8_t *cmd, unsigned int cmd_len,
+ uint8_t *resp, unsigned int *resp_len,
+ int *err);
+void hinawa_fcp_transaction_destroy(HinawaFcpTransaction *trans);
+#endif
diff --git a/include/fw.h b/include/fw.h
new file mode 100644
index 0000000..0256ba1
--- /dev/null
+++ b/include/fw.h
@@ -0,0 +1,51 @@
+#ifndef __ALSA_TOOLS_HINAWA_FW__
+#define __ALSA_TOOLS_HINAWA_FW__
+
+#include <stdint.h>
+#include <pthread.h>
+#include "snd.h"
+
+typedef struct hinawa_fw_unit HinawaFwUnit;
+HinawaFwUnit *hinawa_fw_unit_create(char *fw_path, int *err);
+HinawaFwUnit *hinawa_fw_unit_from_snd_unit(HinawaSndUnit *snd_unit, int *err);
+void hinawa_fw_unit_listen(HinawaFwUnit *unit, int priority, int *err);
+void hinawa_fw_unit_unlisten(HinawaFwUnit *unit);
+void hinawa_fw_unit_destroy(HinawaFwUnit *unit);
+
+typedef struct hinawa_fw_respond HinawaFwRespond;
+typedef void (*HinawaFwRespondCallback)(void *buf, unsigned int *length,
+ void *private_data, int *err);
+HinawaFwRespond *hinawa_fw_respond_create(HinawaFwRespondCallback callback,
+ void *private_data, int *err);
+void hinawa_fw_respond_register(HinawaFwRespond *resp, HinawaFwUnit *unit,
+ uint64_t addr, unsigned int length, int *err);
+void hinawa_fw_respond_unregister(HinawaFwRespond *resp);
+void hinawa_fw_respond_destroy(HinawaFwRespond *resp);
+
+typedef struct hinawa_fw_request HinawaFwRequest;
+typedef enum {
+ HinawaFwRequestTypeRead = 0,
+ HinawaFwRequestTypeWrite,
+ HinawaFwRequestTypeCompareSwap,
+} HinawaFwRequestType;
+HinawaFwRequest *hinawa_fw_request_create(int *err);
+void hinawa_fw_request_run(HinawaFwRequest *req, HinawaFwUnit *unit,
+ HinawaFwRequestType type, uint64_t addr,
+ void *buf, unsigned int length, int *err);
+static inline void hinawa_fw_request_write(HinawaFwRequest *req,
+ HinawaFwUnit *unit, uint64_t addr,
+ void *buf, int length, int *err)
+{
+ hinawa_fw_request_run(req, unit, HinawaFwRequestTypeWrite, addr, buf,
+ length, err);
+}
+static inline void hinawa_fw_request_read(HinawaFwRequest *req,
+ HinawaFwUnit *unit, uint64_t addr,
+ void *buf, int length, int *err)
+{
+ hinawa_fw_request_run(req, unit, HinawaFwRequestTypeRead, addr, buf,
+ length, err);
+}
+void hinawa_fw_request_destroy(HinawaFwRequest *trans);
+
+#endif
diff --git a/include/hinawa.h b/include/hinawa.h
new file mode 100644
index 0000000..5412428
--- /dev/null
+++ b/include/hinawa.h
@@ -0,0 +1,10 @@
+#ifndef __ALSA_TOOLS_HINAWA__
+#define __ALSA_TOOLS_HINAWA__
+
+#include "reactor.h"
+#include "fw.h"
+#include "fcp.h"
+#include "snd.h"
+#include "efw.h"
+
+#endif
diff --git a/include/reactor.h b/include/reactor.h
new file mode 100644
index 0000000..83c467f
--- /dev/null
+++ b/include/reactor.h
@@ -0,0 +1,44 @@
+#ifndef __ALSA_TOOLS_HINAWA_REACTOR__
+#define __ALSA_TOOLS_HINAWA_REACTOR__
+
+#include <stdint.h>
+
+typedef struct hinawa_reactant HinawaReactant;
+typedef enum {
+ HinawaReactantStateCreated,
+ HinawaReactantStateAdded,
+ HinawaReactantStateReadable,
+ HinawaReactantStateWritable,
+ HinawaReactantStateError,
+ HinawaReactantStateRemoved,
+ HinawaReactantStateDestroyed,
+} HinawaReactantState;
+typedef void (*HinawaReactantCallback)(void *private_data,
+ HinawaReactantState state, int *err);
+
+HinawaReactant *hinawa_reactant_create(unsigned int priority, int fd,
+ HinawaReactantCallback callback,
+ void *private_data, int *err);
+void hinawa_reactant_add(HinawaReactant *reactant, uint32_t events, int *err);
+void hinawa_reactant_remove(HinawaReactant *reactant);
+void hinawa_reactant_destroy(HinawaReactant *reactant);
+
+typedef struct hinawa_reactor HinawaReactor;
+typedef enum {
+ HinawaReactorStateCreated,
+ HinawaReactorStateStarted,
+ HinawaReactorStateStopped,
+ HinawaReactorStateDestroyed,
+} HinawaReactorState;
+typedef void (*HinawaReactorCallback)(void *private_data,
+ HinawaReactorState state, int *err);
+
+HinawaReactor *hinawa_reactor_create(unsigned int priority,
+ HinawaReactorCallback callback,
+ void *private_data, int *err);
+void hinawa_reactor_start(HinawaReactor *reactor, unsigned int result_count,
+ unsigned int period, int *err);
+void hinawa_reactor_stop(HinawaReactor *reactor);
+void hinawa_reactor_destroy(HinawaReactor *reactor);
+
+#endif
diff --git a/include/snd.h b/include/snd.h
new file mode 100644
index 0000000..fa7fc9f
--- /dev/null
+++ b/include/snd.h
@@ -0,0 +1,15 @@
+#ifndef __ALSA_TOOLS_HINAWA_SND__
+#define __ALSA_TOOLS_HINAWA_SND__
+
+typedef struct hinawa_snd_unit HinawaSndUnit;
+typedef void (*HinawaSndUnitCallback)(void *);
+HinawaSndUnit *hinawa_snd_unit_create(char *hwdep_path, int *err);
+void hinawa_snd_unit_reserve(HinawaSndUnit *unit, int *err);
+void hinawa_snd_unit_release(HinawaSndUnit *unit);
+void hinawa_snd_unit_listen(HinawaSndUnit *unit, unsigned int priority,
+ int *err);
+void hinawa_snd_unit_unlisten(HinawaSndUnit *unit);
+void hinawa_snd_unit_destroy(HinawaSndUnit *unit);
+typedef struct hinawa_fw_unit HinawaFwUnit;
+
+#endif