Allow mux to specify the default value
Will be written to the output when the selection function returns NULL as the selected input.
This commit is contained in:
		
							parent
							
								
									920866d8af
								
							
						
					
					
						commit
						c624374cc8
					
				| @ -97,13 +97,15 @@ cb_select(struct chan *sel_chan, void *ptr) | ||||
| 				value_str(sel_value), input->chan->name); | ||||
| 	} | ||||
| 
 | ||||
| 	/* Set to null by default */ | ||||
| 	struct value out_value = value_null(); | ||||
| 	struct value out_value = mux->def; | ||||
| 	if (input != NULL && chan_read(input->chan, &out_value) != 0) { | ||||
| 		err("chan_read() failed"); | ||||
| 		return -1; | ||||
| 	} | ||||
| 
 | ||||
| 	dbg("setting output chan %s to %s", | ||||
| 			mux->output->name, value_str(out_value, buf)); | ||||
| 
 | ||||
| 	if (chan_set(mux->output, out_value) != 0) { | ||||
| 		err("chan_set() failed"); | ||||
| 		return -1; | ||||
| @ -180,6 +182,7 @@ mux_init(struct mux *mux, | ||||
| 	mux->output = output; | ||||
| 	mux->ninputs = ninputs; | ||||
| 	mux->inputs = calloc(ninputs, sizeof(struct mux_input)); | ||||
| 	mux->def = value_null(); | ||||
| 
 | ||||
| 	if (mux->inputs == NULL) { | ||||
| 		err("calloc failed:"); | ||||
| @ -245,3 +248,9 @@ mux_set_input(struct mux *mux, int64_t index, struct chan *chan) | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| void | ||||
| mux_set_default(struct mux *mux, struct value def) | ||||
| { | ||||
| 	mux->def = def; | ||||
| } | ||||
|  | ||||
| @ -31,6 +31,7 @@ struct mux { | ||||
| 	mux_select_func_t select_func; | ||||
| 	struct chan *select; | ||||
| 	struct chan *output; | ||||
| 	struct value def; | ||||
| }; | ||||
| 
 | ||||
| void mux_input_init(struct mux_input *mux, | ||||
| @ -54,4 +55,6 @@ USE_RET struct mux_input *mux_get_input(struct mux *mux, | ||||
| USE_RET int mux_register(struct mux *mux, | ||||
| 		struct bay *bay); | ||||
| 
 | ||||
| void mux_set_default(struct mux *mux, struct value def); | ||||
| 
 | ||||
| #endif /* MUX_H */ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user