]> rtime.felk.cvut.cz Git - frescor/frsh.git/blobdiff - resources/item/tests/test_item.c
Deadline miss notification signals API changed
[frescor/frsh.git] / resources / item / tests / test_item.c
index 8195c6fcb491c23f656a367c7c019608679510e9..05e67503d9cebcdc9691fc50564fbecac94c0a57 100644 (file)
@@ -1,27 +1,91 @@
+/**************************************************************************/
+/* ---------------------------------------------------------------------- */
+/* 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.                                              */
+/*                                                                       */
+/*                                                                       */
+/*  This file is part of FRSH (FRescor ScHeduler)                        */
+/*                                                                       */
+/* FRSH 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.  FRSH 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 FRSH; see file      */
+/* COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,  */
+/* Cambridge, MA 02139, USA.                                             */
+/*                                                                       */
+/* As a special exception, including FRSH header files in a file,        */
+/* instantiating FRSH generics or templates, or linking other files      */
+/* with FRSH 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.                                    */
+/**************************************************************************/
+
+/**
+ * @file   test_item.c
+ * @author Michal Sojka <sojkam1@fel.cvut.cz>
+ * @date   Wed Feb 18 16:11:34 2009
+ * 
+ * @brief  Test for ITEM WSN resource
+ * 
+ * 
+ */
+
+
 #include <frsh.h>
 #include <error.h>
 #include <item.h>
 #include <fres_contract.h>
 
-#define N 3
-
-int contract_deadline_sec[N] = { 8, 8, 4 };
-int contract_nodes[N] = { 0x01, 0x03, 0x02 };
+//ITEM ADD
+//#include "FWSN.h"
 
+#if 1
+#define N 4
+int contract_deadline_sec[N] = { 4,4,4,4 };
+int contract_nodes[N] = { 0x04, 0x05, 0x02 ,0x03};
+#else
+#define N 3
+int contract_deadline_sec[N] = {2,2,2};
+int contract_nodes[N] = { 0x02,0x03,0x04};
+#endif
 int main(int argc, char *argv[])
 {
        int ret;
        frsh_contract_t contract[N];
        frsh_vres_id_t vres[N];
        int i;
-
+       
+       
        ret = frsh_init();
        if (ret) PERROR_AND_EXIT(ret, "frsh_init");
 
        /* Negotiate N contracts */
        for (i=0; i<N; i++) {
                frsh_rel_time_t deadline;
-               frsh_signal_info_t si;
                fres_block_item_nodes *nodes;
                ret = frsh_contract_init(&contract[i]);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_init");
@@ -34,41 +98,70 @@ int main(int argc, char *argv[])
                /* Set nodes we want to receive data from */
                nodes = malloc(sizeof(*nodes));
                if (!nodes) PERROR_AND_EXIT(errno, "malloc");
-               nodes->mask = contract_nodes[i];
-               ret = fres_contract_add_block(contract[i], FRES_BLOCK_ITEM_NODES,
-                                             nodes);
+               //nodes->mask = contract_nodes[i];
+               
+               nodes->mask =1;
+               nodes->mask = nodes->mask << (contract_nodes[i]);
+                       
+               
+                       ret = fres_contract_add_item_nodes(contract[i], nodes);
                if (ret) PERROR_AND_EXIT(ret, "Cannot add item_nodes block\n");
 
                /* Set deadline */
                deadline = fosa_msec_to_rel_time(contract_deadline_sec[i]*1000);
                ret = frsh_contract_set_timing_reqs(&contract[i],
-                                                   false, &deadline,
-                                           0, si, 0, si);
+                                                   false, &deadline);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
 
                /* Negotiate the contract */
                ret = frsh_contract_negotiate(&contract[i], &vres[i]);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_negotiate");
+               if (ret) printf(" \n frsh_contract_negotiate - NOT ACCEPTED \n");
        }
        printf("Contracts negotiated\n");
 
-       for (i=0; i<10; i++) {
-               int j;
-               printf("Reading data\n");
-               for (j=0; j<N; j++) {
-                       unsigned *data;
-                       ret = frs_item_receive(vres[j], &data);
+       for (i=0; i<30; i++) {
+               //int j;
+               //printf("Reading data\n");
+               //for (j=0; j<N; j++) {
+                       unsigned char *data;
+                       int len;
+               //                      int k;
+                       ret = fra_item_receive(vres[1], &data);
                        if (ret == -1) PERROR_AND_EXIT(errno, "frs_item_receive");
+                       len = ret;
+                       
+                       /*  Do something with the received data */
+                               
+                       /*      printf("JOP 89 : %i  - ",len);
+                       for (k = 0; k < len-1; k++)
+                       {
+                               printf("%02x ", data[k]);
+                               if (k%4 == 3)
+                                       printf(" | ");
+                       }
+                       putchar('\n');*/
+                       
+                       int l;
+                       int m;
+                       for (l=1; l < len/4; l++)
+                       {
+                               for(m=1; m < 20; m++)
+                               {
+                                       if (data[4*l-1] > 6*m) putchar('*');
+                                       else putchar(' ');
+                               }
+                               printf(" | ");
+                       }                       
+                       putchar('\n');
                        
-                       /* TODO: Do something with the received data */
-
                        forb_free(data);
-               }
+               //}
                sleep(1);
-       }
+       } 
 
-/*     for (i=0; i<N; i++) { */
-/*             frsh_cancel_contract(vres[i]); */
-/*     }        */
+       for (i=0; i<N; i++) { 
+               frsh_contract_cancel(vres[i]); 
+       }
        return 0;
 }