|
@@ -1,12 +1,18 @@
|
|
|
#include <stdio.h>
|
|
|
#include <stdlib.h>
|
|
|
+#include <stdint.h>
|
|
|
|
|
|
#include <pcilib.h>
|
|
|
#include <pcilib/bar.h>
|
|
|
|
|
|
#include <libsocket/libinetsocket.h>
|
|
|
|
|
|
+#define REG_FREQ_7BIT 0x91A4
|
|
|
|
|
|
+#pragma inline
|
|
|
+void write_reg_32(volatile void *bar, int addr, uint32_t value) {
|
|
|
+ *((volatile uint32_t *) (((char*)bar) + addr)) = value;
|
|
|
+}
|
|
|
|
|
|
|
|
|
int main(int argc, char *argv[]) {
|
|
@@ -40,7 +46,7 @@ int main(int argc, char *argv[]) {
|
|
|
int peer_socket;
|
|
|
char *peer_addr = calloc(16,1);
|
|
|
|
|
|
- peer_socket = accept_inet_stream_socket(socket, peer_addr, 0, 0, 0, 0, 0);
|
|
|
+ peer_socket = accept_inet_stream_socket(socket, peer_addr, 16, 0, 0, 0, 0);
|
|
|
|
|
|
if (peer_socket < 0) {
|
|
|
printf("Failed to accpet client connection\n");
|
|
@@ -51,10 +57,25 @@ int main(int argc, char *argv[]) {
|
|
|
printf("Got connection from: %s\n", peer_addr);
|
|
|
|
|
|
|
|
|
+ unsigned char *buf = calloc(1, 1);
|
|
|
+
|
|
|
+ //THERE IS A BUG WHERE WHEN THE REMOTE CLIENT CLOSES THE SOCKET
|
|
|
+ //"read" BECOMES NON-BLOCKING AND RETURNS THE SAME RESULT OVER
|
|
|
+ //AND OVER AGAIN!
|
|
|
+ while (1) {
|
|
|
+ ret = read (peer_socket, buf, 1);
|
|
|
+
|
|
|
+ printf("Received: %u\n", (*buf)&0xff);
|
|
|
+
|
|
|
+ uint32_t val = (*buf)&0xff;
|
|
|
+ write_reg_32(bar, REG_FREQ_7BIT, val);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
destroy_inet_socket(socket);
|
|
|
|
|
|
printf("All went well\n");
|
|
|
- pcilib_close(pci);
|
|
|
+ //pcilib_close(pci);
|
|
|
return 0;
|
|
|
}
|
|
|
|