]> rtime.felk.cvut.cz Git - frescor/fosa.git/commitdiff
implementation and test for the fosagetcpuresourceid
authorsangorrin <sangorrin@35b4ef3e-fd22-0410-ab77-dab3279adceb>
Thu, 26 Jun 2008 10:43:15 +0000 (10:43 +0000)
committersangorrin <sangorrin@35b4ef3e-fd22-0410-ab77-dab3279adceb>
Thu, 26 Jun 2008 10:43:15 +0000 (10:43 +0000)
git-svn-id: http://www.frescor.org/private/svn/frescor/fosa/trunk@1293 35b4ef3e-fd22-0410-ab77-dab3279adceb

src_marte_os/fosa_platform_values.c [new file with mode: 0644]
src_marte_os/tests/test_platform_values/Makefile [new file with mode: 0644]
src_marte_os/tests/test_platform_values/Makefile.omk [new file with mode: 0644]
src_marte_os/tests/test_platform_values/test_fosa_get_cpu_resource_id.c [new file with mode: 0644]

diff --git a/src_marte_os/fosa_platform_values.c b/src_marte_os/fosa_platform_values.c
new file mode 100644 (file)
index 0000000..5da526e
--- /dev/null
@@ -0,0 +1,130 @@
+// -----------------------------------------------------------------------
+//  Copyright (C) 2006 - 2008 FRESCOR consortium partners:
+//
+//    Universidad de Cantabria,              SPAIN
+//    University of York,                    UK
+//    Scuola Superiore Sant'Anna,            ITALY
+//    Kaiserslautern University,             GERMANY
+//    Univ. Politécnica  Valencia,           SPAIN
+//    Czech Technical University in Prague,  CZECH REPUBLIC
+//    ENEA                                   SWEDEN
+//    Thales Communication S.A.              FRANCE
+//    Visual Tools S.A.                      SPAIN
+//    Rapita Systems Ltd                     UK
+//    Evidence                               ITALY
+//
+//    See http://www.frescor.org for a link to partners' websites
+//
+//           FRESCOR project (FP6/2005/IST/5-034026) is funded
+//        in part by the European Union Sixth Framework Programme
+//        The European Union is not liable of any use that may be
+//        made of this code.
+//
+//
+//  based on previous work (FSF) done in the FIRST project
+//
+//   Copyright (C) 2005  Mälardalen University, SWEDEN
+//                       Scuola Superiore S.Anna, ITALY
+//                       Universidad de Cantabria, SPAIN
+//                       University of York, UK
+//
+//   FSF API web pages: http://marte.unican.es/fsf/docs
+//                      http://shark.sssup.it/contrib/first/docs/
+//
+//   This file is part of FOSA (Frsh Operating System Adaption)
+//
+//  FOSA is free software; you can redistribute it and/or modify it
+//  under terms of the GNU General Public License as published by the
+//  Free Software Foundation; either version 2, or (at your option) any
+//  later version.  FOSA 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 FOSA; see file
+//  COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
+//  Cambridge, MA 02139, USA.
+//
+//  As a special exception, including FOSA header files in a file,
+//  instantiating FOSA generics or templates, or linking other files
+//  with FOSA objects to produce an executable application, does not
+//  by itself cause the resulting executable application to be covered
+//  by the GNU General Public License. This exception does not
+//  however invalidate any other reasons why the executable file might be
+//  covered by the GNU Public License.
+// -----------------------------------------------------------------------
+//fosa_time.h
+//==============================================
+//  ********  ******    ********  **********
+//  **///// /**    **  **//////  /**     /**
+//  **      /**    ** /**        /**     /**
+//  ******* /**    ** /********* /**********
+//  **////  /**    ** ////////** /**//////**
+//  **      /**    **        /** /**     /**
+//  **      /**    **  ********  /**     /**
+//  //       /******/  ////////   //      //
+//
+// FOSA(Frescor Operating System Adaptation layer)
+//================================================
+#include "fosa_platform_values.h"
+
+/**
+ * fosa_get_cpu_resource_id()
+ *
+ * Obtain the cpu resource id of the current node by making use of any
+ * mechanism that allows to distinguish between nodes (ie MAC addresses,
+ * configuration parameters, etc..)
+ */
+
+#include <drivers/if_ether.h>
+#include <drivers/eth_ioctl.h>
+#include <fcntl.h>
+#include <assert.h>
+#include <unistd.h>
+#include <string.h>
+
+#define MAC_WIFI1 "00:0E:0C:5B:1D:BD"
+#define MAC_WIFI2 "00:0E:0C:5B:1E:28"
+
+#define STATION_0 MAC_WIFI1
+#define STATION_1 MAC_WIFI2
+
+#if 1
+#include <stdio.h>
+#define DEBUG(x,args...) printf("%s: " x, __func__ , ##args)
+#else
+#define DEBUG(x,args...)
+#endif
+
+int fosa_get_cpu_resource_id(fosa_resource_id_t *cpu_id)
+{
+        int err, fd;
+        struct ether_addr mac, mac_tmp;
+        char mac_str[18];
+
+        fd = open("/dev/eth0", O_RDWR);
+        assert(fd != -1);
+
+        err = ioctl(fd, ETH_HWADDR, mac.ether_addr_octet);
+        assert(err == 0);
+
+        ether_ntoa (&mac, mac_str);
+        DEBUG("I am %s\n", mac_str);
+
+        err = ether_aton(STATION_0, &mac_tmp);
+        assert(err == 0);
+
+        if (memcmp(&mac_tmp, &mac, sizeof(mac)) == 0) {
+                DEBUG("STATION_0\n");
+                *cpu_id = 0;
+        }
+
+        err = ether_aton(STATION_1, &mac_tmp);
+        assert(err == 0);
+
+        if (memcmp(&mac_tmp, &mac, sizeof(mac)) == 0) {
+                DEBUG("STATION_1\n");
+                *cpu_id = 1;
+        }
+
+        return 0;
+}
diff --git a/src_marte_os/tests/test_platform_values/Makefile b/src_marte_os/tests/test_platform_values/Makefile
new file mode 100644 (file)
index 0000000..0884262
--- /dev/null
@@ -0,0 +1,4 @@
+include ../../../config.mk
+include ../../../rules.mk
+
+
diff --git a/src_marte_os/tests/test_platform_values/Makefile.omk b/src_marte_os/tests/test_platform_values/Makefile.omk
new file mode 100644 (file)
index 0000000..a02e70f
--- /dev/null
@@ -0,0 +1,8 @@
+test_PROGRAMS:=$(basename $(notdir $(wildcard $(SOURCES_DIR)/*.c)))
+
+$(foreach t,$(test_PROGRAMS),\
+$(eval $(t)_SOURCES = $(t).c)\
+$(eval $(t)_LIBS = fosa m)\
+)
+
+
diff --git a/src_marte_os/tests/test_platform_values/test_fosa_get_cpu_resource_id.c b/src_marte_os/tests/test_platform_values/test_fosa_get_cpu_resource_id.c
new file mode 100644 (file)
index 0000000..0cc9c42
--- /dev/null
@@ -0,0 +1,70 @@
+// -----------------------------------------------------------------------
+//  Copyright (C) 2006 - 2008 FRESCOR consortium partners:
+//
+//    Universidad de Cantabria,              SPAIN
+//    University of York,                    UK
+//    Scuola Superiore Sant'Anna,            ITALY
+//    Kaiserslautern University,             GERMANY
+//    Univ. Politécnica  Valencia,           SPAIN
+//    Czech Technical University in Prague,  CZECH REPUBLIC
+//    ENEA                                   SWEDEN
+//    Thales Communication S.A.              FRANCE
+//    Visual Tools S.A.                      SPAIN
+//    Rapita Systems Ltd                     UK
+//    Evidence                               ITALY
+//
+//    See http://www.frescor.org for a link to partners' websites
+//
+//           FRESCOR project (FP6/2005/IST/5-034026) is funded
+//        in part by the European Union Sixth Framework Programme
+//        The European Union is not liable of any use that may be
+//        made of this code.
+//
+//
+//  based on previous work (FSF) done in the FIRST project
+//
+//   Copyright (C) 2005  Mälardalen University, SWEDEN
+//                       Scuola Superiore S.Anna, ITALY
+//                       Universidad de Cantabria, SPAIN
+//                       University of York, UK
+//
+//   FSF API web pages: http://marte.unican.es/fsf/docs
+//                      http://shark.sssup.it/contrib/first/docs/
+//
+//   This file is part of FOSA (Frsh Operating System Adaption)
+//
+//  FOSA is free software; you can redistribute it and/or modify it
+//  under terms of the GNU General Public License as published by the
+//  Free Software Foundation; either version 2, or (at your option) any
+//  later version.  FOSA 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 FOSA; see file
+//  COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
+//  Cambridge, MA 02139, USA.
+//
+//  As a special exception, including FOSA header files in a file,
+//  instantiating FOSA generics or templates, or linking other files
+//  with FOSA objects to produce an executable application, does not
+//  by itself cause the resulting executable application to be covered
+//  by the GNU General Public License. This exception does not
+//  however invalidate any other reasons why the executable file might be
+//  covered by the GNU Public License.
+// -----------------------------------------------------------------------
+#include <assert.h>
+#include <stdio.h>
+#include "fosa.h"
+
+int main () {
+
+        int ret;
+        fosa_resource_id_t cpu_id;
+
+        ret = fosa_get_cpu_resource_id(&cpu_id);
+        assert (ret == 0);
+
+        printf("CPU ID: %u\n", cpu_id);
+
+        return 0;
+}