summaryrefslogtreecommitdiff
path: root/usrp/host/apps-inband/gmac.mbh
diff options
context:
space:
mode:
Diffstat (limited to 'usrp/host/apps-inband/gmac.mbh')
-rw-r--r--usrp/host/apps-inband/gmac.mbh146
1 files changed, 146 insertions, 0 deletions
diff --git a/usrp/host/apps-inband/gmac.mbh b/usrp/host/apps-inband/gmac.mbh
new file mode 100644
index 0000000000..4fa9a062fd
--- /dev/null
+++ b/usrp/host/apps-inband/gmac.mbh
@@ -0,0 +1,146 @@
+;; -*- scheme -*- ; not really, but tells emacs how to format this
+;;
+;; Copyright 2007 Free Software Foundation, Inc.
+;;
+;; This file is part of GNU Radio
+;;
+;; GNU Radio is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+;;
+;; GNU Radio is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License along
+;; with this program; if not, write to the Free Software Foundation, Inc.,
+;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+;;
+
+;; ----------------------------------------------------------------
+;; This is an mblock header file
+;;
+;; The format is very much a work-in-progress.
+;; It'll be compiled to C++.
+;; ----------------------------------------------------------------
+
+;; In the outgoing messages described below, invocation-handle is an
+;; identifier provided by the client to tag the method invocation.
+;; The identifier will be returned with the response, to provide the
+;; client with a mechanism to match asynchronous responses with the
+;; commands that generate them. The value of the invocation-handle is
+;; opaque the the server, and is not required by the server to be
+;; unique.
+;;
+;; In the incoming messages described below, invocation-handle is the
+;; identifier provided by the client in the prompting invocation. The
+;; identifier is returned with the response, so that the client has a
+;; mechanism to match asynchronous responses with the commands that
+;; generated them.
+;;
+;; status is either #t, indicating success, or a symbol indicating an error.
+;; All symbol's names shall begin with %error-
+
+
+;; ----------------------------------------------------------------
+;; gmac-tx
+;;
+;; The protocol class is defined from the client's point-of-view.
+;; (The client port is unconjugated, the server port is conjugated.)
+
+(define-protocol-class gmac-tx
+
+ (:outgoing
+
+ ;; Transmitting packets can carry an invocation handle so the application
+ ;; can get TX results on specific packets, such as whether a packet tagged
+ ;; as #1 was successfully transmitted or not. This would allow the
+ ;; application to implement something sliding window like.
+ ;;
+ ;; 'dst' is the destination MAC address (given a MAC addressing scheme)
+ ;;
+ ;; 'data' will be treated transparently and passed on as samples.
+ ;;
+ ;; 'properties' can be used in the future to set per-packet options such as
+ ;; carrier sense overriding functionality.
+ (cmd-tx-pkt invocation-handle dst data properties)
+
+ )
+
+ (:incoming
+
+ ;; The response will carry the same invocation-handle passed with cmd-tx-pkt
+ (response-tx-pkt invocation-handle status)
+
+ )
+ )
+
+;; ----------------------------------------------------------------
+;; gmac-rx
+;;
+;; The protocol class is defined from the client's point-of-view.
+;; (The client port is unconjugated, the server port is conjugated.)
+
+(define-protocol-class gmac-rx
+
+ (:outgoing
+
+ ;; There are currently no outgoing commands, I believe that the RX
+ ;; should always be enabled, there is no point in having an enable/disable
+ ;; that I can see.
+
+ )
+
+ (:incoming
+
+ ;; Contains packets decoded by the MAC destined for this machine, sent by
+ ;; the specified address.
+ (response-rx-pkt invocation-handle src data)
+
+ )
+ )
+
+
+;; ----------------------------------------------------------------
+;; gmac-cs
+;;
+;; The protocol class is defined from the client's point-of-view.
+;; (The client port is unconjugated, the server port is conjugated.)
+;;
+;; This defines a control/status interface to the MAC layer, for control over
+;; functionality such as carrier sense and future functionality such as channel
+;; hopping.
+
+
+(define-protocol-class gmac-cs
+
+ (:outgoing
+
+ ;; Threshold represents the carrier sense threshold based on the digital
+ ;; reading out of the DAC. If the threshold is set to PMT_NIL then the
+ ;; MAC will use averaging to determine an appropriate threshold.
+ (cmd-carrier-sense-enable invocation-handle threshold deadline)
+ (cmd-carrier-sense-threshold invocation-handle threshold)
+ (cmd-carrier-sense-disable invocation-handle)
+
+ ;; Setting the number of fast transmission retries on a failure before
+ ;; reporting a loss back to the application.
+ (cmd-set-tx-retries invocation-handle retries)
+
+ )
+
+ (:incoming
+
+ (response-gmac-initialized invocation-handle status)
+
+ (response-carrier-sense-enable invocation-handle status)
+ (response-carrier-sense-threshold invocation-handle status)
+ (response-carrier-sense-deadline invocation-handle status)
+ (response-carrier-sense-disable invocation-handle status)
+
+ (response-set-tx-retries invocation-handle status)
+
+ )
+ )