/* plays a locking sound when a Tetrimino Locks into place */ void play_Lock_Tetrimino_FX( ) { set_noise( B ); enable_channel( EXTRA_CHANNEL, false, true ); set_volume( EXTRA_CHANNEL, ENVELOPE_VOLUME ); set_envelope( LOCK_TETRIMINO_ENV_FREQ, TETRI_LOCK_ENVELOPE ); }
/* plays a soft little noise as the tetrimino moves */ void play_Move_Tetrimino_FX() { set_noise( A ); enable_channel( SFX_CHANNEL, false, true ); enable_channel( EXTRA_CHANNEL, false, false ); set_volume( SFX_CHANNEL, ENVELOPE_VOLUME ); set_envelope( MOVE_TETRIMINO_ENV_FREQ, TETRI_MOVE_ENVELOPE ); }
void getdistance(void) { usleep(4000); // start reading Interrupt INT_L = AS3935_returnInterrupt(); usleep(2000); if (INT_L == 8){ distance = AS3935_returnDistance(); printf("Lightning detected, it was %d km away \n", distance); sleep(1); } else if ( INT_L == 1 ){ printf(" noise level too high, ajusting: \n"); set_noise(); } // empty buffer fflush(stdout); }
static cmd_args_t * args_init(int argc, char **argv) { cmd_args_t *args; uint32_t fl_th = 0; uint32_t fl_rc = 0; uint32_t fl_of = 0; uint32_t fl_rs = 0; uint32_t fl_cs = 0; uint32_t fl_bs = 0; int c, rc, i; if (argc == 1) { usage(); return ((cmd_args_t *)NULL); } /* Configure and populate the args structures */ args = malloc(sizeof (*args)); if (args == NULL) return (NULL); memset(args, 0, sizeof (*args)); /* provide a default block size of 128K */ args->B.next_val = 0; args->B.val[0] = MIN_BLKSIZE; args->B.val_count = 1; while ((c = getopt_long(argc, argv, short_opt, long_opt, NULL)) != -1) { rc = 0; switch (c) { case 't': /* --thread count */ rc = set_count(REGEX_NUMBERS, REGEX_NUMBERS_COMMA, &args->T, optarg, &fl_th, "threadcount"); break; case 'l': /* --threadcount_low */ rc = set_lhi(REGEX_NUMBERS, &args->T, optarg, FLAG_LOW, &fl_th, "threadcount_low"); break; case 'h': /* --threadcount_high */ rc = set_lhi(REGEX_NUMBERS, &args->T, optarg, FLAG_HIGH, &fl_th, "threadcount_high"); break; case 'e': /* --threadcount_inc */ rc = set_lhi(REGEX_NUMBERS, &args->T, optarg, FLAG_INCR, &fl_th, "threadcount_incr"); break; case 'n': /* --regioncount */ rc = set_count(REGEX_NUMBERS, REGEX_NUMBERS_COMMA, &args->N, optarg, &fl_rc, "regioncount"); break; case 'i': /* --regioncount_low */ rc = set_lhi(REGEX_NUMBERS, &args->N, optarg, FLAG_LOW, &fl_rc, "regioncount_low"); break; case 'j': /* --regioncount_high */ rc = set_lhi(REGEX_NUMBERS, &args->N, optarg, FLAG_HIGH, &fl_rc, "regioncount_high"); break; case 'k': /* --regioncount_inc */ rc = set_lhi(REGEX_NUMBERS, &args->N, optarg, FLAG_INCR, &fl_rc, "regioncount_incr"); break; case 'o': /* --offset */ rc = set_count(REGEX_SIZE, REGEX_SIZE_COMMA, &args->O, optarg, &fl_of, "offset"); break; case 'm': /* --offset_low */ rc = set_lhi(REGEX_SIZE, &args->O, optarg, FLAG_LOW, &fl_of, "offset_low"); break; case 'q': /* --offset_high */ rc = set_lhi(REGEX_SIZE, &args->O, optarg, FLAG_HIGH, &fl_of, "offset_high"); break; case 'r': /* --offset_inc */ rc = set_lhi(REGEX_NUMBERS, &args->O, optarg, FLAG_INCR, &fl_of, "offset_incr"); break; case 'c': /* --chunksize */ rc = set_count(REGEX_SIZE, REGEX_SIZE_COMMA, &args->C, optarg, &fl_cs, "chunksize"); break; case 'a': /* --chunksize_low */ rc = set_lhi(REGEX_SIZE, &args->C, optarg, FLAG_LOW, &fl_cs, "chunksize_low"); break; case 'b': /* --chunksize_high */ rc = set_lhi(REGEX_SIZE, &args->C, optarg, FLAG_HIGH, &fl_cs, "chunksize_high"); break; case 'g': /* --chunksize_inc */ rc = set_lhi(REGEX_NUMBERS, &args->C, optarg, FLAG_INCR, &fl_cs, "chunksize_incr"); break; case 's': /* --regionsize */ rc = set_count(REGEX_SIZE, REGEX_SIZE_COMMA, &args->S, optarg, &fl_rs, "regionsize"); break; case 'A': /* --regionsize_low */ rc = set_lhi(REGEX_SIZE, &args->S, optarg, FLAG_LOW, &fl_rs, "regionsize_low"); break; case 'B': /* --regionsize_high */ rc = set_lhi(REGEX_SIZE, &args->S, optarg, FLAG_HIGH, &fl_rs, "regionsize_high"); break; case 'C': /* --regionsize_inc */ rc = set_lhi(REGEX_NUMBERS, &args->S, optarg, FLAG_INCR, &fl_rs, "regionsize_incr"); break; case 'S': /* --blocksize */ rc = set_count(REGEX_SIZE, REGEX_SIZE_COMMA, &args->B, optarg, &fl_bs, "blocksize"); break; case 'L': /* --load */ rc = set_load_params(args, optarg); break; case 'p': /* --pool */ args->pool = optarg; break; case 'M': args->name = optarg; break; case 'x': /* --cleanup */ args->flags |= DMU_REMOVE; break; case 'P': /* --prerun */ strncpy(args->pre, optarg, ZPIOS_PATH_SIZE - 1); break; case 'R': /* --postrun */ strncpy(args->post, optarg, ZPIOS_PATH_SIZE - 1); break; case 'G': /* --log */ strncpy(args->log, optarg, ZPIOS_PATH_SIZE - 1); break; case 'I': /* --regionnoise */ rc = set_noise(&args->regionnoise, optarg, "regionnoise"); break; case 'N': /* --chunknoise */ rc = set_noise(&args->chunknoise, optarg, "chunknoise"); break; case 'T': /* --threaddelay */ rc = set_noise(&args->thread_delay, optarg, "threaddelay"); break; case 'V': /* --verify */ args->flags |= DMU_VERIFY; break; case 'z': /* --zerocopy */ args->flags |= (DMU_WRITE_ZC | DMU_READ_ZC); break; case 'O': /* --nowait */ args->flags |= DMU_WRITE_NOWAIT; break; case 'f': /* --noprefetch */ args->flags |= DMU_READ_NOPF; break; case 'H': /* --human-readable */ args->human_readable = 1; break; case 'v': /* --verbose */ args->verbose++; break; case '?': rc = 1; break; default: fprintf(stderr, "Unknown option '%s'\n", argv[optind - 1]); rc = EINVAL; break; } if (rc) { usage(); args_fini(args); return (NULL); } } check_mutual_exclusive_command_lines(fl_th, "threadcount"); check_mutual_exclusive_command_lines(fl_rc, "regioncount"); check_mutual_exclusive_command_lines(fl_of, "offset"); check_mutual_exclusive_command_lines(fl_rs, "regionsize"); check_mutual_exclusive_command_lines(fl_cs, "chunksize"); if (args->pool == NULL) { fprintf(stderr, "Error: Pool not specificed\n"); usage(); args_fini(args); return (NULL); } if ((args->flags & (DMU_WRITE_ZC | DMU_READ_ZC)) && (args->flags & DMU_VERIFY)) { fprintf(stderr, "Error, --zerocopy incompatible --verify, " "used for performance analysis only\n"); usage(); args_fini(args); return (NULL); } /* validate block size(s) */ for (i = 0; i < args->B.val_count; i++) { int bs = args->B.val[i]; if (bs < MIN_BLKSIZE || bs > MAX_BLKSIZE || !POW_OF_TWO(bs)) { fprintf(stderr, "Error: invalid block size %d\n", bs); args_fini(args); return (NULL); } } return (args); }