Defines | Functions

llcontrol-sync2VRFM-core.c File Reference

#include "local.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <popt.h>
#include "acq32ioctl.h"
#include "acq32busprot.h"
#include "llif.h"
#include "llprotocol.h"
#include "llcontrol.h"
#include "x86timer.h"
#include "llcontrol-core.h"

Go to the source code of this file.

Defines

#define FLAVOR   "ACQ196"
#define SAMPLE_SIZE   (96*2)
#define icard   0

Functions

static void sync_2v_updateTstats (u32 cmd, struct Card *card, struct TimingStats *tstats)
 updates timing stats from embedded host buffer data
static u32 card_sync_2v_WaitDmaDone (struct Card *card)
void appEnterLLC_SYNC_2VRFM (void)
 set up LLCV2_INIT buffer and enter mode.
int runSYNC_2VRFM (struct TestDescription *td, int soft_clock)
 runs the test SYNC_2V mode.

Define Documentation

#define FLAVOR   "ACQ196"

Definition at line 67 of file llcontrol-sync2VRFM-core.c.

#define icard   0
#define SAMPLE_SIZE   (96*2)

Function Documentation

void appEnterLLC_SYNC_2VRFM ( void   ) 

set up LLCV2_INIT buffer and enter mode.

Buffer set up as 4K block at offset 0

Todo:
  • this overwrites settings from initV2Stats(), initV2Stats is therefore redundant.

Definition at line 90 of file llcontrol-sync2VRFM-core.c.

Referenced by runTest().

static u32 card_sync_2v_WaitDmaDone ( struct Card card  )  [static]
int runSYNC_2VRFM ( struct TestDescription td,
int  soft_clock 
)

runs the test SYNC_2V mode.

PSEUDO-CODE:

  • (1) Clear the latch timer
  • (2) Set a local memory target address and arm the capture
  • (3) Poll for counter running (hardware counter starts on external gate)
  • (4) Iterate for required number of samples:
  • (5) [optionally send a soft clock command] trigger an acquisition
  • (6) Wait for DMA Done - at this point data is available in target mem. A "real" control application is probably getting most of its calcs done here rather than simply polling
  • (7) [Get the latch (sample) and current uSec counters from the boards - only if interested]
  • (8) Check the process has not stopped (external gate high)
  • (b) write data to host side buffer(LLCV2_AO_HSBS)
  • (b.1) take the incoming value on feedback_channel and propagate to all DACS. default is to assume HAWG on DAC0 (so feedback_channel better be 0 !), but td->update_dacs makes a better test.
  • (b.15) special case where we are DRIVING the initial DAC signal from host side.
  • (b.2) simple feedforward case - just drive all DACS from AWG pattern.

Definition at line 99 of file llcontrol-sync2VRFM-core.c.

References TestDescription::decimation, TestDescription::do_work, doApplicationWork(), EACHCARD, EACHMBX, G_quit, getMboxPollcount(), icard, TestDescription::iter, TestDescription::iterations, LLC_MAKE_DECIM, MARK_TIME, TestDescription::min_latency_test, TestDescription::stats_buf, TimingStats::target_poll, TimingStats::tlatch, TestDescription::tlog, updateTimingStats(), updateTstats, and waitDmaDone.

Referenced by runTest().

static void sync_2v_updateTstats ( u32  cmd,
struct Card card,
struct TimingStats tstats 
) [static]