[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r7967 - in usrp2/trunk/firmware: apps include
From: |
eb |
Subject: |
[Commit-gnuradio] r7967 - in usrp2/trunk/firmware: apps include |
Date: |
Fri, 7 Mar 2008 23:16:46 -0700 (MST) |
Author: eb
Date: 2008-03-07 23:16:45 -0700 (Fri, 07 Mar 2008)
New Revision: 7967
Modified:
usrp2/trunk/firmware/apps/app_common.c
usrp2/trunk/firmware/apps/app_passthru.c
usrp2/trunk/firmware/apps/eth_to_serdes.c
usrp2/trunk/firmware/include/usrp2_eth_packet.h
Log:
work-in-progress: read time
Modified: usrp2/trunk/firmware/apps/app_common.c
===================================================================
--- usrp2/trunk/firmware/apps/app_common.c 2008-03-08 03:09:14 UTC (rev
7966)
+++ usrp2/trunk/firmware/apps/app_common.c 2008-03-08 06:16:45 UTC (rev
7967)
@@ -52,6 +52,22 @@
reply_pkt->fixed.timestamp = timer_regs->time;
}
+static void
+send_reply(unsigned char *reply, size_t reply_len)
+{
+ if (reply_len < 64)
+ reply_len = 64;
+
+ // wait for buffer to become idle
+ while((buffer_pool_status->status & BPS_IDLE(CPU_TX_BUF)) == 0)
+ ;
+
+ // copy reply into CPU_TX_BUF
+ memcpy_wa(buffer_ram(CPU_TX_BUF), reply, reply_len);
+ bp_send_from_buf(CPU_TX_BUF, PORT_ETH, 1, 0, (reply_len + 3)/ 4);
+}
+
+
void
handle_control_chan_frame(u2_eth_packet_t *pkt, size_t len)
{
@@ -73,23 +89,15 @@
{
op_id_reply_t *r = (op_id_reply_t *) s;
reply_len = sizeof(u2_eth_packet_t) + sizeof(op_id_reply_t);
- if (reply_len < 64)
- reply_len = 64;
r->opcode = OP_ID_REPLY;
r->len = sizeof(op_id_reply_t);
- r->rid_mbz = 0; // FIXME
+ r->rid_mbz = ((op_id_t *) p)->rid_mbz;
r->addr = *ethernet_mac_addr();
r->hw_rev = 0x0000; // FIXME
// r->fpga_md5sum = ; // FIXME
// r->sw_md5sum = ; // FIXME
}
-
- // FIXME need to see if ethernet tx is busy
-
- // copy reply into CPU_TX_BUF
- memcpy_wa(buffer_ram(CPU_TX_BUF), reply, reply_len);
-
- bp_send_from_buf(CPU_TX_BUF, PORT_ETH, 1, 0, reply_len / 4);
+ send_reply(reply, reply_len);
break;
case OP_START_RX:
@@ -108,6 +116,20 @@
burn_mac_addr((op_burn_mac_addr_t *) p);
break;
+ case OP_READ_TIME:
+ memset(reply, 0, sizeof(reply));
+ set_reply_hdr((u2_eth_packet_t *) reply, pkt);
+ {
+ op_read_time_reply_t *r = (op_read_time_reply_t *) s;
+ reply_len = sizeof(u2_eth_packet_t) + sizeof(op_read_time_reply_t);
+ r->opcode = OP_READ_TIME_REPLY;
+ r->len = sizeof(op_read_time_reply_t);
+ r->rid_mbz = ((op_read_time_t *) p)->rid_mbz;
+ r->time = timer_regs->time;
+ }
+ send_reply(reply, reply_len);
+ break;
+
default:
break;
}
@@ -125,7 +147,7 @@
u2_eth_packet_t *pkt = (u2_eth_packet_t *) buffer_ram(bufno);
size_t byte_len = (buffer_pool_status->last_line[bufno] - 3) * 4;
- // hal_toggle_leds(0x1);
+ hal_toggle_leds(0x1);
// inspect rcvd frame and figure out what do do.
@@ -144,10 +166,11 @@
default:
if((pkt->thdr.seqno) == exp_seqno){
exp_seqno++;
+ putchar('.');
}
else {
//putchar('S');
- printf("S%d %d ",exp_seqno,pkt->thdr.seqno);
+ //printf("S%d %d ",exp_seqno,pkt->thdr.seqno);
exp_seqno = pkt->thdr.seqno + 1;
}
return false; // pass it on to Tx DSP
@@ -169,11 +192,10 @@
void
config_tx_cmd(op_config_tx_t *p)
{
- // printf("config_tx_cmd: interp = %d\n", p->interp);
+ printf("config_tx_cmd: interp = %d\n", p->interp);
// print_rmon_regs();
dsp_tx_regs->freq = p->phase_inc;
dsp_tx_regs->scale_iq = p->scale_iq;
dsp_tx_regs->interp_rate = p->interp - 1; // register gets N-1
}
-
Modified: usrp2/trunk/firmware/apps/app_passthru.c
===================================================================
--- usrp2/trunk/firmware/apps/app_passthru.c 2008-03-08 03:09:14 UTC (rev
7966)
+++ usrp2/trunk/firmware/apps/app_passthru.c 2008-03-08 06:16:45 UTC (rev
7967)
@@ -106,7 +106,7 @@
u2_eth_packet_t *pkt = (u2_eth_packet_t *) buffer_ram(bufno);
size_t byte_len = (buffer_pool_status->last_line[bufno] - 3) * 4;
- // hal_toggle_leds(0x1);
+ hal_toggle_leds(0x1);
// inspect rcvd frame and figure out what do do.
@@ -140,7 +140,7 @@
void
config_tx_cmd(op_config_tx_t *p)
{
- // printf("config_tx_cmd: interp = %d\n", p->interp);
+ printf("config_tx_cmd: interp = %d\n", p->interp);
// print_rmon_regs();
dsp_tx_regs->freq = p->phase_inc;
Modified: usrp2/trunk/firmware/apps/eth_to_serdes.c
===================================================================
--- usrp2/trunk/firmware/apps/eth_to_serdes.c 2008-03-08 03:09:14 UTC (rev
7966)
+++ usrp2/trunk/firmware/apps/eth_to_serdes.c 2008-03-08 06:16:45 UTC (rev
7967)
@@ -125,8 +125,8 @@
// setup tx gpio bits for GPIOM_FPGA_1 -- fpga debug output
- hal_gpio_set_tx_mode(15, 0, GPIOM_FPGA_1);
- hal_gpio_set_rx_mode(15, 0, GPIOM_FPGA_1); // no printing...
+ hal_gpio_set_tx_mode(15, 0, GPIOM_FPGA_0);
+ hal_gpio_set_rx_mode(15, 0, GPIOM_FPGA_0);
putstr("\neth_to_serdes\n");
Modified: usrp2/trunk/firmware/include/usrp2_eth_packet.h
===================================================================
--- usrp2/trunk/firmware/include/usrp2_eth_packet.h 2008-03-08 03:09:14 UTC
(rev 7966)
+++ usrp2/trunk/firmware/include/usrp2_eth_packet.h 2008-03-08 06:16:45 UTC
(rev 7967)
@@ -163,6 +163,8 @@
#define OP_READ_REG_REPLY 8
#define OP_BURN_MAC_ADDR 9
#define OP_CONFIG_TX 10
+#define OP_READ_TIME 11 // What time is it? (100 MHz
counter)
+#define OP_READ_TIME_REPLY 12 // This time.
typedef struct {
uint8_t opcode;
@@ -220,6 +222,20 @@
u2_mac_addr_t addr;
} op_burn_mac_addr_t;
+typedef struct {
+ uint8_t opcode;
+ uint8_t len;
+ uint16_t rid_mbz;
+} op_read_time_t;
+
+typedef struct {
+ uint8_t opcode;
+ uint8_t len;
+ uint16_t rid_mbz;
+ uint32_t time;
+} op_read_time_reply_t;
+
+
// union of all of them
typedef union {
@@ -230,6 +246,8 @@
op_stop_rx_t op_stop_rx;
op_config_tx_t op_config_tx;
op_burn_mac_addr_t op_burn_mac_addr;
+ op_read_time_t op_read_time;
+ op_read_time_reply_t op_read_time_reply;
} u2_subpkt_t;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r7967 - in usrp2/trunk/firmware: apps include,
eb <=