1414
1515AdafruitIO_Data::AdafruitIO_Data ()
1616{
17- _csv = 0 ;
1817 _lat = 0 ;
1918 _lon = 0 ;
2019 _ele = 0 ;
2120 next_data = 0 ;
2221
2322 memset (_feed, 0 , AIO_FEED_NAME_LENGTH);
2423 memset (_value, 0 , AIO_DATA_LENGTH);
24+ memset (_csv, 0 , AIO_CSV_LENGTH);
2525}
2626
2727AdafruitIO_Data::AdafruitIO_Data (AdafruitIO_Feed *f)
2828{
29- _csv = 0 ;
3029 _lat = 0 ;
3130 _lon = 0 ;
3231 _ele = 0 ;
@@ -35,11 +34,11 @@ AdafruitIO_Data::AdafruitIO_Data(AdafruitIO_Feed *f)
3534 memset (_feed, 0 , AIO_FEED_NAME_LENGTH);
3635 strcpy (_feed, f->name );
3736 memset (_value, 0 , AIO_DATA_LENGTH);
37+ memset (_csv, 0 , AIO_CSV_LENGTH);
3838}
3939
4040AdafruitIO_Data::AdafruitIO_Data (AdafruitIO_Feed *f, char *csv)
4141{
42- _csv = csv;
4342 _lat = 0 ;
4443 _lon = 0 ;
4544 _ele = 0 ;
@@ -48,13 +47,14 @@ AdafruitIO_Data::AdafruitIO_Data(AdafruitIO_Feed *f, char *csv)
4847 memset (_feed, 0 , AIO_FEED_NAME_LENGTH);
4948 strcpy (_feed, f->name );
5049 memset (_value, 0 , AIO_DATA_LENGTH);
50+ memset (_csv, 0 , AIO_CSV_LENGTH);
51+ strcpy (_csv, csv);
5152
5253 _parseCSV ();
5354}
5455
5556AdafruitIO_Data::AdafruitIO_Data (const char *f)
5657{
57- _csv = 0 ;
5858 _lat = 0 ;
5959 _lon = 0 ;
6060 _ele = 0 ;
@@ -67,7 +67,6 @@ AdafruitIO_Data::AdafruitIO_Data(const char *f)
6767
6868AdafruitIO_Data::AdafruitIO_Data (const char *f, char *csv)
6969{
70- _csv = csv;
7170 _lat = 0 ;
7271 _lon = 0 ;
7372 _ele = 0 ;
@@ -76,13 +75,16 @@ AdafruitIO_Data::AdafruitIO_Data(const char *f, char *csv)
7675 memset (_feed, 0 , AIO_FEED_NAME_LENGTH);
7776 strcpy (_feed, f);
7877 memset (_value, 0 , AIO_DATA_LENGTH);
78+ memset (_csv, 0 , AIO_CSV_LENGTH);
79+ strcpy (_csv, csv);
7980
8081 _parseCSV ();
8182}
8283
8384bool AdafruitIO_Data::setCSV (char *csv)
8485{
85- _csv = csv;
86+ memset (_csv, 0 , AIO_CSV_LENGTH);
87+ strcpy (_csv, csv);
8688 return _parseCSV ();
8789}
8890
@@ -91,7 +93,6 @@ void AdafruitIO_Data::setLocation(double lat, double lon, double ele)
9193 // if lat, lon, ele == 0, don't set them
9294 if ((abs (0 -lat) < 0.000001 ) && (abs (0 -lon) < 0.000001 ) && (abs (0 -ele) < 0.000001 ))
9395 return ;
94-
9596 _lat = lat;
9697 _lon = lon;
9798 _ele = ele;
@@ -358,20 +359,18 @@ long AdafruitIO_Data::toNeoPixel()
358359
359360char * AdafruitIO_Data::toCSV ()
360361{
361- char csv[150 ];
362-
363362 if (! _value)
364363 return _csv;
365364
366- strcpy (csv, _value);
367- strcat (csv, " ," );
368- strcat (csv, charFromDouble (_lat));
369- strcat (csv, " ," );
370- strcat (csv, charFromDouble (_lon));
371- strcat (csv, " ," );
372- strcat (csv, charFromDouble (_ele, 2 ));
365+ memset (_csv, 0 , AIO_CSV_LENGTH);
373366
374- _csv = csv;
367+ strcpy (_csv, _value);
368+ strcat (_csv, " ," );
369+ strcat (_csv, charFromDouble (_lat));
370+ strcat (_csv, " ," );
371+ strcat (_csv, charFromDouble (_lon));
372+ strcat (_csv, " ," );
373+ strcat (_csv, charFromDouble (_ele, 2 ));
375374
376375 return _csv;
377376}
0 commit comments