]> rtime.felk.cvut.cz Git - mf6xx.git/commitdiff
Choosing port number for Qt GUI to connect (in virtual MF624 implementation) is now...
authorRostislav Lisovy <lisovy@gmail.com>
Tue, 10 May 2011 21:24:53 +0000 (23:24 +0200)
committerRostislav Lisovy <lisovy@gmail.com>
Tue, 10 May 2011 21:24:53 +0000 (23:24 +0200)
src/qemu/README.txt
src/qemu/hw/mf624.c

index 8f95d6ad89f554bd50ff62202e8024b29234f33e..42a34b8b71cd1f23abe4ca40cfdd1f6c25836039 100644 (file)
@@ -31,3 +31,7 @@ If you don't want to install Qemu, your binary is in "i386-softmmu" directory
 ===============================
 * Add "-device mf624" to Qemu command line parameters.
   E. g. "i386-softmmu$ ./qemu  -device mf624 -hda ..//debian.qcow --boot c"
+
+* Virtual MF624 card communicates with GUI interface through TCP/IP protocol. 
+  For choosing particular port number use "-device mf624, port=55555", 
+  where 55555 is your port number.
index 04c81a7c4bb129d520abd6d6ff9e264f65dbd8aa..621e4bf4a0c51ff91a209d8a0a7992029f8f6d4f 100755 (executable)
@@ -96,7 +96,7 @@ typedef struct {
 
        int socket_srv;
        int socket_tmp;
-       int port;
+       uint32_t port;
        int addr;
 
         /* The real voltage which is on inputs od A/D convertors.
@@ -129,7 +129,7 @@ typedef struct {
 int instance = 0; // Global variable shared between multiple mf624 devices
 
 
-int16_t volts_to_adinternal(double volt)
+static int16_t volts_to_adinternal(double volt)
 {
        if (volt > 9.99) {
                volt = 9.99;
@@ -141,7 +141,7 @@ int16_t volts_to_adinternal(double volt)
        return ((int16_t) ((volt*0x8000)/10))>>2;
 }
 
-double dacinternal_to_volts(int16_t dacinternal)
+static double dacinternal_to_volts(int16_t dacinternal)
 {
        return ((((double)dacinternal)/0x4000)*20.0 - 10.0);
 }
@@ -149,7 +149,7 @@ double dacinternal_to_volts(int16_t dacinternal)
 //-----------------------------------------------------------------------------
 
 /* Initialize register values due to MF624 manual */
-void mf624_init_registers(mf624_state_t* s)
+static void mf624_init_registers(mf624_state_t* s)
 {
 #define INTCSR_default_value           0x000300
 #define GPIOC_default_value            0x006C0 | (0x10 << 21) | (2 << 25)
@@ -182,7 +182,7 @@ void mf624_init_registers(mf624_state_t* s)
 }
 
 /* After some widget's value is changed, new value is send via socket to Qemu */
-void socket_write(mf624_state_t *s, const char* reg, double val)
+static void socket_write(mf624_state_t *s, const char* reg, double val)
 {
        int status;
        char write_buffer[256];
@@ -196,7 +196,7 @@ void socket_write(mf624_state_t *s, const char* reg, double val)
 }
 
 #define STRING_BUFF_SIZE       256
-void socket_read(mf624_state_t* dev)
+static void socket_read(mf624_state_t* dev)
 {
        // For parsing read instructions
        char reg[STRING_BUFF_SIZE+1];
@@ -251,14 +251,14 @@ void socket_read(mf624_state_t* dev)
                                dev->real_world_AD7 = volts_to_adinternal(val);
                        }
                        else {
-                               printf("reg = %s; val = %d\n", reg, val);
+                               printf("reg = %s; val = %f\n", reg, val);
                        } 
                }
        }
 }
 
 
-void* init_socket(void* ptr)
+static void* init_socket(void* ptr)
 {
        struct sockaddr_in addr_client;
        struct sockaddr_in addr_srv;
@@ -319,7 +319,7 @@ void* init_socket(void* ptr)
 
 //-----------------------------------------------------------------------------
 
-void mf624_BAR0_write32(void *opaque, target_phys_addr_t addr, uint32_t value)
+static void mf624_BAR0_write32(void *opaque, target_phys_addr_t addr, uint32_t value)
 {
        mf624_state_t *s = opaque;
 
@@ -369,7 +369,7 @@ void mf624_BAR0_write32(void *opaque, target_phys_addr_t addr, uint32_t value)
 }
 
 
-uint32_t mf624_BAR0_read32(void *opaque, target_phys_addr_t addr)
+static uint32_t mf624_BAR0_read32(void *opaque, target_phys_addr_t addr)
 {
        mf624_state_t *s = opaque;
 
@@ -387,7 +387,7 @@ uint32_t mf624_BAR0_read32(void *opaque, target_phys_addr_t addr)
 }
 
 
-uint32_t mf624_BAR2_read16(void *opaque, target_phys_addr_t addr)
+static uint32_t mf624_BAR2_read16(void *opaque, target_phys_addr_t addr)
 {
        int i;
        int ADDATA_val = 0xFFFF;
@@ -481,7 +481,7 @@ uint32_t mf624_BAR2_read16(void *opaque, target_phys_addr_t addr)
 }
 
 
-void mf624_BAR2_write16(void *opaque, target_phys_addr_t addr, uint32_t value)
+static void mf624_BAR2_write16(void *opaque, target_phys_addr_t addr, uint32_t value)
 {
        mf624_state_t *s = opaque;
 
@@ -568,12 +568,12 @@ void mf624_BAR2_write16(void *opaque, target_phys_addr_t addr, uint32_t value)
 }
 
 
-void mf624_BAR4_write32(void *opaque, target_phys_addr_t addr, uint32_t value)
+static void mf624_BAR4_write32(void *opaque, target_phys_addr_t addr, uint32_t value)
 {
        printf("mf624_BAR4_write32(): addr = %d; value = %d\n", addr, value);
 }
 
-uint32_t mf624_BAR4_read32(void *opaque, target_phys_addr_t addr)
+static uint32_t mf624_BAR4_read32(void *opaque, target_phys_addr_t addr)
 {
        printf("mf624_BAR4_read32(): addr = %d\n", addr);
        return 0x0;
@@ -641,6 +641,7 @@ static void mf624_map(PCIDevice *pci_dev, int region_num,
 
 }
 
+#define DEFAULT_PORT                   55555
 static int pci_mf624_init(PCIDevice *pci_dev)
 {
        mf624_state_t *s = DO_UPCAST(mf624_state_t, dev, pci_dev); //alocation of mf624_state_t
@@ -649,8 +650,10 @@ static int pci_mf624_init(PCIDevice *pci_dev)
 
        printf("MF624 Loaded.\n");
 
-       s->port = 55555 + instance; // Default port
-       instance ++;
+       if (s->port == DEFAULT_PORT) {
+               s->port += instance; // Each instance of the same device should have another port number
+               instance ++;
+       }
 
        //Set all internal registers to default values
        mf624_init_registers(s);
@@ -703,11 +706,16 @@ static int pci_mf624_exit(PCIDevice *pci_dev)
        return 0;
 }
 
+
 static PCIDeviceInfo mf624_info = {
        .qdev.name  = "mf624",
        .qdev.size  = sizeof(mf624_state_t),
        .init       = pci_mf624_init,
-       .exit       = pci_mf624_exit
+       .exit       = pci_mf624_exit,
+       .qdev.props = (Property[]) {
+               DEFINE_PROP_UINT32("port", mf624_state_t, port, DEFAULT_PORT),
+               DEFINE_PROP_END_OF_LIST(),
+       }
 };
 
 static void mf624_register_device(void)