コード例 #1
0
void execute_sensor_measurement()
{
#ifdef PLATFORM_EFM32GG_STK3700
  float internal_temp = hw_get_internal_temperature();
  lcd_write_temperature(internal_temp*10, 1);

  uint32_t vdd = hw_get_battery();


  fs_write_file(SENSOR_FILE_ID, 0, (uint8_t*)&internal_temp, sizeof(internal_temp)); // File 0x40 is configured to use D7AActP trigger an ALP action which broadcasts this file data on Access Class 0
#endif

#if (defined PLATFORM_EFM32HG_STK3400  || defined PLATFORM_EZR32LG_WSTK6200A)
  char str[30];

  float internal_temp = hw_get_internal_temperature();
  sprintf(str, "Int T: %2d.%d C", (int)internal_temp, (int)(internal_temp*10)%10);
  lcd_write_line(2,str);
  log_print_string(str);

  uint32_t rhData;
  uint32_t tData;
  getHumidityAndTemperature(&rhData, &tData);

  sprintf(str, "Ext T: %d.%d C", (tData/1000), (tData%1000)/100);
  lcd_write_line(3,str);
  log_print_string(str);

  sprintf(str, "Ext H: %d.%d", (rhData/1000), (rhData%1000)/100);
  lcd_write_line(4,str);
  log_print_string(str);

  uint32_t vdd = hw_get_battery();

  sprintf(str, "Batt %d mV", vdd);
  lcd_write_line(5,str);
  log_print_string(str);

  //TODO: put sensor values in array

  uint8_t sensor_values[8];
  uint16_t *pointer =  (uint16_t*) sensor_values;
  *pointer++ = (uint16_t) (internal_temp * 10);
  *pointer++ = (uint16_t) (tData /100);
  *pointer++ = (uint16_t) (rhData /100);
  *pointer++ = (uint16_t) (vdd /10);

  fs_write_file(SENSOR_FILE_ID, 0, (uint8_t*)&sensor_values,8);
#endif

  timer_post_task_delay(&execute_sensor_measurement, SENSOR_UPDATE);
}
コード例 #2
0
ファイル: fs_to_server.c プロジェクト: rawgi/BsRaVs
int32_t mk_WriteFileResponse(FileServerMessage** fsm){
	WriteFileRequest* wfr = (WriteFileRequest*)((*fsm)->payload);

	fs_write_file(wfr->handle, wfr->offset, wfr->length, wfr->data);

	/*keine Informationen über Response-Nachricht*/
	return 0;
}
コード例 #3
0
void execute_sensor_measurement() {
#if HW_NUM_LEDS >= 1
    led_toggle(0);
#endif
    // use the counter value for now instead of 'real' sensor
    uint32_t val = timer_get_counter_value();
    // file 0x40 is configured to use D7AActP trigger an ALP action which 
    // broadcasts this file data on Access Class 0
    fs_write_file(0x40, 0, (uint8_t*)&val, 4);
    timer_post_task_delay(&execute_sensor_measurement, REPORTING_INTERVAL_TICKS);
}
コード例 #4
0
ファイル: fd.c プロジェクト: kshmir/so-2011-3
/* Writes the content of the buffer in the file descriptor.*/
int fd_write(int fd, char * buffer, int block_size) {
	switch(files[fd].type) {
		case _FD_TTY:
		if(block_size == 1 && *buffer != EOF)	{
			video_write_c(buffer);
		} else if (*buffer != EOF){
			video_write(buffer, block_size);
		}
		break;
		case _FD_FIFO:
			return fifo_write((int)files[fd].data, buffer, block_size);
		break;
		case _FD_FILE:
			return fs_write_file((int)files[fd].data, buffer, block_size);
		break;
		default:
		return -1;
	}
	return 1;
}
コード例 #5
0
ファイル: fs.c プロジェクト: kshmir/so-2011-2
// Used to copy a file
unsigned int fs_cp(char * name, char * newname, int from_inode, int to_inode) {
	int i1 = fs_open_file(name, from_inode, O_RD, EXT2_S_IFREG);
	if(i1 < 0)	{
		return i1; // If there's an error with the first name then there's nothing to do actually.
	}
	inode_read(i1, &n);	
	int i2;
	if(!(n.mode & EXT2_S_IFDIR))
	{
		i2 = fs_open_file(newname, to_inode, O_WR, n.mode & (~EXT2_S_IFDIR)); 
		inode_read(i1, &n);	
		if(i2 < 0) { 
			i2 = fs_open_file(newname, to_inode, O_WR | O_NEW , n.mode & (~EXT2_S_IFDIR));
		}
		
		if(i2 < 0) { 
			return ERR_EXISTS;
		}
	} else {
		i2 = fs_mkdir(newname, to_inode);
		if(i2 < 0) { 
			return ERR_EXISTS;
		}
	}

	inode_read(i1, &n);
	block data;
	unsigned long offset = 0;
	
	while(fs_read_file(i1, (void *) &data, sizeof(block), &offset) > 0) {
		if(n.mode & EXT2_S_IFDIR)
		{
			int off = 0;
			dir_op_offset = 0;
			dir_entry * old_dot = NULL;
			dir_entry * dot = iterate_dir_entry(&data);
			// Iterates dir entries
			while (dot != NULL) {
				if (dot == NULL) {
					break;
				} else {
					if (dot->name_len > 0 && dot->inode != i1 && dot->inode != n._dir_inode && i2 != 0) {
						int _cp = fs_cp(dot->name, dot->name, i1, i2);

						if(_cp < 0)
						{
							return _cp;
						}
						off = dir_op_offset;
						dot->name_len = 0;
						dir_op_offset = off;
					}
				}
				old_dot = dot;
				dot = iterate_dir_entry(&data);
			}
			inode_read(i1, &n);
		} else {
			fs_write_file(i2, (void *)&data, sizeof(block));		
		}
	}

	return i2;
}
コード例 #6
0
int main (int argc, char **argv) {
	
	srand(time(NULL));
	unsigned char test_data[TEST_DATA_SIZE] = {0};
	unsigned char cmp_test_data[TEST_DATA_SIZE] = {0};
	createRandomData(test_data,TEST_DATA_SIZE);
	memcpy(&cmp_test_data, &test_data,TEST_DATA_SIZE);
	
	int PASSES = 0;

	assert (fs_mount() >= 0);
	assert (fs_create_file("/testDir", DIR_FILE) >= 0);
	assert (fs_unmount() >= 0);

PASS_OK

	assert (fs_mount() >= 0);
	assert (fs_create_file("/testDir", DIR_FILE) >= 0);
	assert (fs_create_file("/testDir/checkMe.txt", REG_FILE) >= 0);
	assert (fs_unmount() >= 0);
	
PASS_OK


	assert (fs_mount() >= 0);
	assert (fs_create_file("/testDir", DIR_FILE) >= 0);
	assert (fs_create_file("/testDir/checkMe.txt", REG_FILE) >= 0);
	assert (fs_write_file("/testDir/checkMe.txt", test_data, TEST_DATA_SIZE) >= 0);
	assert (fs_unmount() >= 0);
	
PASS_OK

	unsigned char readResults[TEST_DATA_SIZE] = {0};
	
	assert (fs_mount() >= 0);
	assert (fs_create_file("/testDir", DIR_FILE) >= 0);
	assert (fs_create_file("/testDir/checkMe.txt", REG_FILE) >= 0);
	assert (fs_write_file("/testDir/checkMe.txt", test_data, TEST_DATA_SIZE) >= 0);
	assert (fs_read_file("/testDir/checkMe.txt", readResults, TEST_DATA_SIZE) >= 0);
	int i = 0;
	for (;i < TEST_DATA_SIZE; ++i) {
		assert(readResults[i] == cmp_test_data[i]);
	}
	assert (fs_unmount() >= 0);
	
PASS_OK
	
	assert (fs_mount() >= 0);
	assert (fs_create_file("/testDir", DIR_FILE) >= 0);
	assert (fs_create_file("/testDir/checkMe.txt", REG_FILE) >= 0);
	assert (fs_create_file("/testDir/secondMe.txt", REG_FILE) >= 0);
	assert (fs_create_file("/testDir/thirdMe.txt", REG_FILE) >= 0);
	
	Directory_t dir;
	assert (fs_get_directory("/testDir/", &dir) >= 0);
	assert (dir.size == 3);
	assert(strncmp(dir.entries[0].filename,"checkMe.txt",strlen("checkMe.txt")) == 0);
	assert(strncmp(dir.entries[1].filename,"secondMe.txt",strlen("secondMe.txt")) == 0);
	assert(strncmp(dir.entries[2].filename,"thirdMe.txt",strlen("thirdMe.txt")) == 0);
	assert (fs_unmount() >= 0);
	
PASS_OK
	/*NEW TEST ADDED */
	assert (fs_mount() >= 0);
	assert (fs_create_file("/testDir", DIR_FILE) >= 0);
	assert (fs_create_file("/testDir/checkMe.txt", REG_FILE) >= 0);
	assert (fs_create_file("/testDir/secondMe.txt", REG_FILE) >= 0);
	assert (fs_create_file("/testDir/thirdMe.txt", REG_FILE) >= 0);
	assert (fs_remove_file("/testDir/thirdMe.txt") >= 0);
	
	assert (fs_get_directory("/testDir/", &dir) >= 0);
	assert (dir.size == 2);
	assert(strncmp(dir.entries[0].filename,"checkMe.txt",strlen("checkMe.txt")) == 0);
	assert(strncmp(dir.entries[1].filename,"secondMe.txt",strlen("secondMe.txt")) == 0);
	assert (fs_unmount() >= 0);
	

	return 0;
}