diff options
Diffstat (limited to 'usrp/host/apps-inband/gmac.mbh')
-rw-r--r-- | usrp/host/apps-inband/gmac.mbh | 146 |
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) + + ) + ) |